본문 바로가기
엑셀/VBA

웹 크롤링 속도 테스트 Xml VS WinHttp

by 큐브빌드 2021. 6. 3.
반응형

웹 크롤링을 하다 보니 Xml과 WinHttp는 기능이 비슷한 것 같습니다.

 

XML이 빠르다는 Google링 이야기가 많은데 실제 어떠한지 테스트해봤습니다.

 

파싱 하는 부분이 아닌 그냥 단순하게 웹에 접속을 요청하여 자료를 받아오는 순간 까지입니다.

 

테스트는 2가지 타입으로 테스트했습니다.

 

1. 용량이 많은 데이터를 받아 올 때
2. 여러 번 접속해야 되는 경우

 

용량이 많은 데이터라고 해봐야 사실 미비하지만 그나마 큰 코인마켓 캡으로 테스트했습니다.

 

10번씩 테스트하여 최대 , 최솟값을 제외한 8개 값의 평균입니다.

방법 평균 시간
WinHttp 1.269875초
XML 0.962375초

결론적으로 XML이 약 25% 정도 빠릅니다.

 

10번에 대한 시간 테스트입니다.

 

 

실험 코드가 궁금하실 수 있을 것 같아서 실험 코드도 올려 드립니다.

 

Timer라는 함수를 사용해서 테스트했습니다.

Sub WinHTTPTest()
For i = 1 To 10
시작시간 = Timer
Dim WH As New WinHttp.WinHttpRequest

Url = "https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest"
Parameters = "?start=1&limit=5000&convert=krw"
APIKEY = ""

WH.Open "get", Url & Parameters

WH.SetRequestHeader "Accepts", "application/json"
WH.SetRequestHeader "X-CMC_PRO_API_KEY", APIKEY

WH.Send

ResultText = WH.ResponseText '결과값
Cells(i, 1) = Format(Timer - 시작시간, "0.000")
Next

End Sub

Sub XMLTEST()
For i = 1 To 10
시작시간 = Timer
Dim WH As New XMLHTTP60

Url = "https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest"
Parameters = "?start=1&limit=5000&convert=krw"
APIKEY = ""

WH.Open "get", Url & Parameters

WH.SetRequestHeader "Accepts", "application/json"
WH.SetRequestHeader "X-CMC_PRO_API_KEY", APIKEY

WH.Send

ResultText = WH.ResponseText '결과값
Cells(i, 3) = Format(Timer - 시작시간, "0.000")
Next

End Sub

 


그리고 반복 작업에서는 업비트를 사용했습니다.

 

인터넷 접속 횟수에 따른 내용이 되겠습니다.

 

해당 부분은 너무 단시간에 많이 접속하여 그런지 Status가 완료되지 않는 케이스가 몇 번씩 발생했습니다.

 

발생하면 다시 진행하는 형태로 해서 시간을 포함시켰습니다.

 

방법 평균 시간
WinHttp 0.06958초
XML 0.08166초

약 20% WinHttp가 빠릅니다.

 

Status 값이 200이 아닌 케이스는 둘 다 4번씩 이었습니다.

 

반복 접속은 WinHttp가 빠르네요.

 


결론

데이터 값이 클수록 XML의 속도가 빠릅니다.

 

하지만 데이터가 1메가도 넘지 않는다면 무엇을 사용하던 큰 속도 차이는 없습니다.

반응형

댓글