Skip to content

Latest commit

 

History

History
7 lines (4 loc) · 957 Bytes

[为什么有更多的CPU但是我的程序没有跑得更快.md

File metadata and controls

7 lines (4 loc) · 957 Bytes

为什么有更多的CPU但是我的程序没有跑得更快?

更多的CPU是否会让程序更快地运行,取决于程序解决的问题。Go语言提供并发操作(例如Goroutines和channels),但仅在代码本质上是并行的时候,才会真正并行执行。通过添加更多CPU,不能加速那些本质上是顺序执行的问题,而如果可以将这些分为并行执行的话,有时会显着地提高效率。

有时添加更多CPU还会减慢程序。程序如果启用系统多线程,然后花费更多的时间在同步互斥和通讯上来优化一些计算,可能会让程序有明显的下降。这是因为在不同的线程之间传递数据,涉及上下文的传递,这个过程会随着CPU的增加而增加。例如,增加线程数量(CPU)更有可能减慢它而不是加速它

有关此主题的更多详细信息,请参阅https://blog.golang.org/2013/01/concurrency-is-not-parallelism.html。