ホームページ > バックエンド開発 > Golang > 並列化によってこの移動平均計算のパフォーマンスが向上しないのはなぜですか?

並列化によってこの移動平均計算のパフォーマンスが向上しないのはなぜですか?

Barbara Streisand
リリース: 2024-12-29 07:37:14
オリジナル
474 人が閲覧しました

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

Moving_avg_concurrent2 のパフォーマンス

Moving_avg_concurrent2 は、複数のゴルーチンの作成と管理のオーバーヘッドが並列処理のメリットを上回るため、スケールしません。 Goroutine は軽量のスレッドですが、Goroutine の作成とスケジュールのコスト、Goroutine 間の通信のコストなど、それに関連するオーバーヘッドが多少あります。この場合、ゴルーチンを管理するオーバーヘッドが、計算を並列化するメリットよりも大きくなります。

Moving_avg_concurrent3 のパフォーマンス

Moving_avg_concurrent3 は、マスターを使用するため、moving_avg_serial4 よりも遅くなります。 /worker パラダイム。追加のオーバーヘッドが発生します。マスター/ワーカー パラダイムでは、マスター スレッドがワーカー スレッドのプールを作成し、作業をワーカーに分散します。次に、ワーカーは計算を実行し、結果をマスター スレッドに返します。これにより、マスター スレッドはワーカー スレッドを作成して管理する必要があり、ワーカーは作業を受け取って結果を返すためにマスター スレッドと通信する必要があるため、追加のオーバーヘッドが発生します。

結論

この場合、計算を並列化しても大幅なパフォーマンスの向上を達成することはできません。ゴルーチンの管理に伴うオーバーヘッドは、並列処理の利点を上回ります。アルゴリズムのシリアル実装 (moving_avg_serial4 など) を使用することをお勧めします。

以上が並列化によってこの移動平均計算のパフォーマンスが向上しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート