如果是,如何确定该最大值?这对我来说是最重要的部分。我真的很想手动设置它。我考虑使用runtime.GOMAXPROCS(0),因为我怀疑更多的并行性会产生任何额外的好处。该评论似乎表明,它在某个时候被标记为弃用。
据我所知,Go 例程的唯一限制因素是内存,因为休眠的 Go 例程仍然需要内存来存储其堆栈。
这并不是绝对必要的。运行这些 goroutine 的线程数量默认等于机器上的 CPU 核心数量(可通过 进行配置GOMAXPROCS),因此不会出现线程级别的争用。
然而,由于内存缓存的影响,准备运行的 goroutine 较少,您可能会获得性能优势。例如,在 8 核机器上,如果您有 1000 个活动 Goroutines,并且都接触大量内存,那么当 Goroutine 再次运行时,所需的内存页面可能已经从 CPU 缓存中逐出。Goroutine 越少,缓存命中的几率就越高。
与性能问题一样:唯一确定的方法是使用具有代表性的工作负载自行测量。
| 归档时间: |
|
| 查看次数: |
4785 次 |
| 最近记录: |