恥ずかしい並列タスクと Go パフォーマンス
背景:
提供されたコードは最適化に対応していますデータ ウィンドウの移動平均を含む計算のパフォーマンスを向上させるタスク。 goroutine を使用して大幅な高速化を達成するという目標。
質問:
提供されている goroutine ベースの実装 (moving_avg_concurrent2 および Moving_avg_concurrent3) が期待されるパフォーマンスを示さないのはなぜですか
答え:
事実 #1: このタスクは恥ずかしいほど並列ではありません
移動平均の計算は本質的に逐次的なプロセス。複数のデータポイントを操作しますが、計算はウィンドウ内の以前の値に依存するため、操作を完全に並列化することは不可能です。
事実 #2: Go の分散処理の制限
Go の分散処理機能は、処理の大部分が並列処理されている場合にのみ有効になります。この場合、移動平均の計算は主に逐次的に行われるため、分散の利点が制限されます。
追加の考慮事項:
結論:
ゴルーチンと並列処理は、特定の種類の処理では効果的ですが、計算に関しては、パフォーマンス向上のための特効薬ではありません。この場合、移動平均計算の固有の逐次的性質により、並列処理の利点が制限されます。
以上がゴルーチンがこの移動平均計算のパフォーマンスを向上させないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。