首页 >后端开发 >Golang >为什么并行化不能提高移动平均计算的性能?

为什么并行化不能提高移动平均计算的性能?

Barbara Streisand
Barbara Streisand原创
2024-12-29 07:37:14509浏览

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

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn