我有一些 Go 代码在我的 Macbook(具有两个物理内核的 Intel Core i5 处理器)上进行基准测试。
Go 的runtime.NumCPU()
产量为 4,因为它计算“虚拟核心”
在这种情况下,我对虚拟内核了解不多,但我的基准测试似乎表明,当我使用配置代码时,多处理速度只有 2 倍
runtime.GOMAXPROCS(runtime.NumCPU())
如果我使用 2 个而不是 4 个内核,我将获得相同的性能。我会发布代码,但我认为这在很大程度上与我的问题无关,这些问题是:
1)这是正常的吗?
2)如果是的话,为什么多个虚拟内核会使像我的macbook这样的机器受益?
万一这很重要,在我的代码中,goroutines 的数量与你设置runtime.GOMAXPROCS()
的任务是完全并行的,没有相互依赖关系或共享状态。它作为本机编译的二进制文件运行。
慕斯王
相关分类