수백 개의 작은 독립 실행 형 작업으로 나눌 수있는 하나의 큰 작업을 고려하십시오. 좀 더 구체적으로 말하자면, 각각의 작은 작업은 간단한 네트워크 요청을 보내고 서버로부터받은 대답을 결정하는 것입니다. 이러한 작은 작업은 1 초보다 오래 걸릴 것으로 예상되지 않으며 총 몇 대의 서버가 필요합니다.Java Executor : 작은 작업 또는 큰 작업?
저는 Executor 프레임 워크를 사용하여이를 구현하는 두 가지 방법을 염두에두고 어느 것이 더 좋고 왜 필요한지 알고 싶습니다.
- 송수신 작업을 수반하여 각각 5 ~ 10 개의 작업을 생성하십시오.
- 각각의 & 송신에 대해 단일 태스크 (호출 가능 또는 실행 가능)를 작성하여 실행 프로그램에 의해 실행되도록 모든 (수백) 스케줄을 작성하십시오. 내 질문에 내가 (적어도 성능 현명한) 더 나은 어떤이를 테스트하고 자신을 위해 볼 게으른 것을 보여준다 경우
는 미안 해요. 이 질문에 대한 답을 구하면서 좀 더 일반적인 측면이 있습니다. 이와 같은 상황에서 모든 스케줄링 및 기타 작업을 수행하기 위해 실행 프로그램을 사용하려는 경우 적은 수의 태스크를 많이 작성하거나 더 적은 수의 태스크로 그룹화하는 것이 더 낫습니다.
각 작업의 길이가 10-100 밀리 초를 초과하지 않도록하는 것이 좋습니다. –
처리량을 줄이거 나 지연 시간을 줄이기 위해 "더 나은"의미가 무엇인지에 달려 있습니다. 단일 코어에서 작동하는지 8 코어에서 작동하는지에 따라 달라질 수 있습니다. – DNA
그 설명을 더 자세히 설명해 주시겠습니까? – Gray