是否有比可用更多的内核(-j 选项)使 SCons 构建速度变慢?

Does more cores (-j option) than available make SCons builds slower?

我的 CPU 中有 2 个内核。如果我指定 --jobs=4,SCons 的构建会变慢吗?我问的原因是因为 Python 2 runs slower on multiple cores.

实际上,我正在考虑将某些东西 --jobs=4 添加到我的所有项目中作为默认值。

如果答案是平台相关的,编译器是GCC,平台是Windows。

一般来说,使用 scons -j # 构建会比串行构建更快。

您发布的 link 适用于 运行 纯 python 代码。然而,由于在 SCons 构建中花费的大部分时间都在等待外部工具完成(编译、link 等),因此基准测试不适用。

如果你有一堆没有 I/O 并且是纯 python 的构建器,那么它可能会产生一些影响。

一般来说,您会看到构建软件的时间接近线性加速(处理 SConscripts 和构建依赖关系树需要花费一些时间,目前不受 -j 的影响)直到您达到饱和您在 and/or 上 运行 的文件系统的 I/O 有一个 -j #,它大大超过了您可用的核心数。

我们的邮件列表中可能有一些基准。

请注意,-j 特别不会对 null 产生任何影响(增量构建,因为所有文件都是最新的,因此不需要构建任何内容)并且对增量构建的影响较小,其中只需要构建几个文件(由于上述问题)。