如果是,如何确定最大值?这对我来说是最重要的部分。我真的很想手动设置它。我考虑过使用 ,因为我怀疑更多的并行性会产生任何额外的好处。该注释似乎表明,它在某些时候被标记为弃用。runtime.GOMAXPROCS(0)从我收集到的信息来看,当涉及到围棋例程时,唯一的限制因素是记忆,因为睡眠的围棋例程仍然需要内存来堆叠。
3 回答

繁星淼淼
TA贡献1775条经验 获得超11个赞
这并不是绝对必要的。默认情况下,运行这些 goroutine 的线程数等于计算机上的 CPU 内核数(可通过 进行配置),因此在线程级别不会发生争用。GOMAXPROCS
但是,由于内存缓存效应,准备运行的 goroutine 更少,可能会带来性能优势。例如,在 8 核计算机上,如果您有 1000 个活动 goroutine,这些 goroutine 都接触到大量内存,则当一个 goroutine 再次运行时,所需的内存页面可能已经从 CPU 缓存中逐出。使用较少的戈鲁丁,缓存命中的几率更高。
与性能问题一样:确定的唯一方法是使用具有代表性的工作负载自己进行测量。

人到中年有点甜
TA贡献1895条经验 获得超7个赞
在我们的测试中,我们确定最好生成固定数量的 worker 例程,并使用这些例程来执行所有工作。戈鲁丁的创建和破坏是轻量级的,但并非完全没有开销。如果戈鲁廷花费任何时间阻塞,则该开销通常微不足道。
- 3 回答
- 0 关注
- 99 浏览
添加回答
举报
0/150
提交
取消