Moving_avg_concurrent2 성능
Moving_avg_concurrent2는 여러 고루틴을 생성하고 관리하는 오버헤드가 병렬 처리의 이점보다 크기 때문에 확장되지 않습니다. 고루틴은 경량 스레드이지만 고루틴 생성 및 예약 비용, 고루틴 간 통신 비용과 같은 일부 오버헤드가 여전히 발생합니다. 이 경우 고루틴을 관리하는 오버헤드가 계산 병렬화의 이점보다 큽니다.
Moving_avg_concurrent3 성능
Moving_avg_concurrent3은 마스터를 사용하기 때문에 Moving_avg_serial4보다 느립니다. /worker 패러다임, 추가 오버헤드가 발생합니다. 마스터/작업자 패러다임에서 마스터 스레드는 작업자 스레드 풀을 만든 다음 작업을 작업자에게 배포합니다. 그런 다음 작업자는 계산을 수행하고 결과를 마스터 스레드에 반환합니다. 이는 마스터 스레드가 작업자 스레드를 생성하고 관리해야 하고 작업자가 작업을 수신하고 결과를 반환하기 위해 마스터 스레드와 통신해야 하기 때문에 추가 오버헤드가 발생합니다.
결론
이 경우 계산을 병렬화해도 큰 성능 향상을 얻을 수 없습니다. 고루틴을 관리하는 오버헤드가 병렬 처리의 이점보다 큽니다. Moving_avg_serial4와 같은 알고리즘의 직렬 구현을 사용하는 것이 더 좋습니다.
위 내용은 이 이동 평균 계산에서 병렬화가 성능을 향상시키지 못하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!