令人尴尬的并行任务和 Go 性能
背景:
提供的代码解决了优化问题增强涉及数据窗口移动平均值的计算性能的任务,目标是实现使用 goroutine 显着加速。
问题:
为什么提供的基于 goroutine 的实现(moving_avg_concurrent2 和 moving_avg_concurrent3)没有表现出预期的性能改进?
答案:
事实#1:此任务不是令人尴尬的并行
移动平均计算本质上是一个连续的过程。虽然它对多个数据点进行操作,但计算取决于窗口中先前的值,从而无法完全并行化操作。
事实#2:Go 的分布式处理限制
Go 的分布式处理能力只有在大量处理并行时才有效。在这种情况下,移动平均计算主要是顺序的,限制了分布的好处。
其他注意事项:
结论:
虽然 Goroutines 和并行处理对于某些类型的计算可能有效,但它们并不是灵丹妙药。性能改进。在这种情况下,移动平均计算固有的顺序性质限制了并行处理的优势。
以上是为什么 Goroutine 没有提高移动平均计算的性能?的详细内容。更多信息请关注PHP中文网其他相关文章!