“问题说明”中并发比串行的时间开销大的原因

先关掉HT。然后让第一个核跑20秒,盯着cpu使用率看看是不是真的达到100%。接着让第一个核,与第二个核,同时跑,盯着CPU使用率看看是不是达到目的,并注意一下两个核的运算时间。然后再一个个的加,直到跑满全部核,这个过程中你就能发现问题。
■网友
把ncpu改成1试试
■网友
不请自来,go的并发主要是用来解决网络io等慢设备访问的等待问题的,而内存恰恰不属于这个部分。你算自加的这个过程完全是在内存里,并不能体现并发的威力,相反,开了那么多携程并行计算的话反而会有不必要的调度开销,自然串行更快了。呐呐,我们来改一改,假设你的计算结果或数据是需要通过网络来传递的,每次计算以后差不多有1秒的延迟(通过time.Sleep(1*time.Second)来模拟)。你再比较一下试试。
■网友
因为使用多核或者多线程(系统线程)需要加锁,所以更慢。


    推荐阅读