개인 프로젝트를 만들면서 웹에서 가져와야 할 데이터가 다운로드하는데 시간이 오래 걸리고 총 데이터량을 확인하기 위해 코드를 만들었지만 한 페이지의 데이터를 가져오는 시간이 2초인 것을 감안하면 빠른 시간 안에 총 데이터량을 확인할 수 없었다. 나중에 어떻게 이 문제를 해결했는지 보기 위해 기록하고자 한다.

 

 

 

해결방법 1.


단순히 선형탐색으로만을 사용하여 100페이지의 데이터를 가져오는 데 걸린 시간은 234초이다.

100 페이지의 데이터 양은 100,000개로 확인되며, 직접 페이지 양이 얼마인지 확인해 보았을 때 약 35000개가 넘는 페이지가 있다는 것을 확인할 수 있었다. 한 페이지당 접속이 2초 걸리며 35000개의 페이즈를 확인하려면 70000초 

19시간 26분이나 걸린다. 이건 사용할 수 없는 알고리즘으로 판단하여 다른 방법을 생각했다.

 

 

 

 

해결방법 2


정확한 알고리즘 이름이 있지만 어떤 거였는지 기억은 안 난다.. 하지만 방법은 간단했다. 시작점과 끝점 중간점을 기록하는 것이다. 이 방법을 사용할 수 있었던 것은 1페이지당 메타데이터를 제외한 데이터는 1000개가 확인됐으며 40000을 넣었을 때 데이터가 없다면 메타데이터 1개만이 존재한다. 또한 페이지 끝은 1개보다 많을 것이며 1000개보다는 작을 것이다. 그렇기에 이러한 생각을 알고리즘으로 나타냈다. 그 결과 19시간이 걸리던 작업을 26초로 끝낼 수 있게 되었다. 마지막 페이지가 어느 것인지 총 데이터량은 무엇인지 단순한 작업을 하는 것이었지만 선형 탐색으로 한다면 오래 걸릴 작업이었다.

 

PS. 하지만 웹 요청이 들어올 때마다 같은 작업을 할 수 없다고 생각하기에 결과 값을 저장하여 최초 작업만 시간이 오래 걸릴 뿐 그다음은 가장 빠른 작업을 진행할 수 있을 것이다.

+ Recent posts