Moving_avg_concurrent2 效能
Moving_avg_concurrent2 無法擴展,因為創建和管理多個 goroutine 的開銷好處超過了並行性的開銷好處。 Goroutine 是輕量級線程,但它們仍然有一些與之相關的開銷,例如創建和調度 Goroutine 的成本,以及 Goroutine 之間通信的成本。在這種情況下,管理 goroutine 的開銷大於平行計算的好處。
Moving_avg_concurrent3 效能
Moving_avg_concurrent3 比 moving_avg_serial4 慢,因為它使用 master /worker 範例,這會帶來額外的開銷。在主/工作範例中,主執行緒建立工作執行緒池,然後將工作指派給工作執行緒。然後,工作執行緒執行計算並將結果傳回給主執行緒。這會帶來額外的開銷,因為主線程必須建立和管理工作線程,並且工作線程必須與主線程通訊以接收工作並傳回結果。
結論
在這種情況下,不可能透過並行計算來實現顯著的效能提升。管理 goroutine 的開銷超過了並行性的好處。最好使用該演算法的串行實現,例如 moving_avg_serial4。
以上是為什麼並行化不能提高移動平均運算的效能?的詳細內容。更多資訊請關注PHP中文網其他相關文章!