> 백엔드 개발 > Golang > 이 이동 평균 계산에서 병렬화가 성능을 향상시키지 못하는 이유는 무엇입니까?

이 이동 평균 계산에서 병렬화가 성능을 향상시키지 못하는 이유는 무엇입니까?

Barbara Streisand
풀어 주다: 2024-12-29 07:37:14
원래의
475명이 탐색했습니다.

Why Doesn't Parallelization Improve Performance in This Moving Average Calculation?

Moving_avg_concurrent2 성능

Moving_avg_concurrent2는 여러 고루틴을 생성하고 관리하는 오버헤드가 병렬 처리의 이점보다 크기 때문에 확장되지 않습니다. 고루틴은 경량 스레드이지만 고루틴 생성 및 예약 비용, 고루틴 간 통신 비용과 같은 일부 오버헤드가 여전히 발생합니다. 이 경우 고루틴을 관리하는 오버헤드가 계산 병렬화의 이점보다 큽니다.

Moving_avg_concurrent3 성능

Moving_avg_concurrent3은 마스터를 사용하기 때문에 Moving_avg_serial4보다 느립니다. /worker 패러다임, 추가 오버헤드가 발생합니다. 마스터/작업자 패러다임에서 마스터 스레드는 작업자 스레드 풀을 만든 다음 작업을 작업자에게 배포합니다. 그런 다음 작업자는 계산을 수행하고 결과를 마스터 스레드에 반환합니다. 이는 마스터 스레드가 작업자 스레드를 생성하고 관리해야 하고 작업자가 작업을 수신하고 결과를 반환하기 위해 마스터 스레드와 통신해야 하기 때문에 추가 오버헤드가 발생합니다.

결론

이 경우 계산을 병렬화해도 큰 성능 향상을 얻을 수 없습니다. 고루틴을 관리하는 오버헤드가 병렬 처리의 이점보다 큽니다. Moving_avg_serial4와 같은 알고리즘의 직렬 구현을 사용하는 것이 더 좋습니다.

위 내용은 이 이동 평균 계산에서 병렬화가 성능을 향상시키지 못하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿