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中文网其他相关文章!