반응형
웹 크롤링을 하다 보니 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메가도 넘지 않는다면 무엇을 사용하던 큰 속도 차이는 없습니다.
반응형
'엑셀 > VBA' 카테고리의 다른 글
VBA에서 Chrome으로 크롤링 하기 - Selenium (0) | 2021.07.01 |
---|---|
VBA 에서 파일 또는 폴더 선택하는 GUI 사용하기 (FileDialog) (0) | 2021.07.01 |
코인마켓캡(CoinMarketCap) API 엑셀로 적용 방법 소개 - VBA (2) | 2021.04.26 |
VBA 웹 크롤링 하기 - InternetExplorer 사용 (1) | 2021.04.23 |
VBA,엑셀 로 SHA512 HASH 하기 (0) | 2021.04.20 |
댓글