웹 페이지에서 콘텐츠를 스크랩하는 앱을 만들었습니다. 스크래핑 메서드가 다른 스레드에서 실행 중입니다. 1,000 초 동안 1000 개의 웹 페이지에서 콘텐츠를 긁을 수 있다고 가정 해 봅시다.각 루프마다 1 개의 X 스레드를 할당하십시오.
나는 약간의 테스트를 수행했습니다. 내 응용 프로그램을 5 번 실행하고 각 응용 프로그램에 다른 1000 개의 URL을 입력하십시오. 이제 150 초 내에 5000 개의 URL에서 콘텐츠를 스크랩했습니다.
좋아,하지만 매번 5 개 앱을 실행하고 싶지는 않습니다. 루프를 (link
을 links
개체에서 얻는 데 사용됩니다) 빠르게하고 싶습니다.
각 링크에 대해 실제로 새 스레드를 사용하지 않습니다. out of memory exception
을 제공합니다. 나는 Parallel
루프가 똑같을 것이라고 생각한다.
저는 foreach
루프가 더 빨리 5 ~ 10 회 실행되도록 만들고 싶습니다. 내 코드는 다음과 같습니다.
foreach (Link link in links)
scrapeContent(link.url);
어떻게하면 더 빨리 실행할 수 있습니까? 스레드를 할당하는 것이 최선의 선택일까요?
"병렬 루프가 똑같이 할거라고 생각합니다." --- "사고"대신에 확인하는 것은 어떻습니까? 사실은 항상 가정보다 낫습니다. – zerkms
전반적인 속도는 특정 웹 서버의 느린 응답으로 구분됩니다. 병렬로 여러 요청을 실행하는 경우 대기 시간을 활용하여 처리량을 높일 수 있습니다. 내 접근 방식은 스레드 풀입니다. 시행 착오로 풀 크기를 최적화하십시오. –
모든 코드를 보여줄 수 있다면 정말 좋을 것입니다. 당신이 보여준 작은 비트는 도움이되지 않습니다. 우리는 코드를 실행하고 개선 된 내용과 비교하는 것이 이상적입니다. 코드를 개선하여 질문에 대한 답을 얻을 수 있습니다. – Enigmativity