【问题标题】:How do I use all cores when building in Visual Studio?在 Visual Studio 中构建时如何使用所有内核?
【发布时间】:2021-03-21 23:42:27
【问题描述】:

我刚刚尝试compile Unreal Engine,正如 Epic Games 所记录的那样。

在 Visual Studio 2017 中构建项目时,我注意到我的大部分内核都处于空闲状态:

即使我减去只是逻辑的核心(因为它们不是“真实的”),一半的核心或多或少都处于非活动状态。 (16 个真正的核心,但其中只有 6-8 个似乎真正工作)

我怀疑其他硬件组件是否是瓶颈。内存是半空的,SSD 基本上什么也没做(大约 1% 的使用率)。 我已在 Visual Studio 设置中将最大并行项目构建数设置为 32。

我有什么遗漏的吗?我可以通过利用更多内核来获得更好的性能吗?

【问题讨论】:

    标签: visual-studio


    【解决方案1】:

    并非所有操作/算法都同样适用于并行化。有些本质上是顺序的。 例如不同项目的构建顺序取决于它们之间的依赖关系。 此外,在编译和构建过程中使用了很多中间文件。即使在使用 SSD 时,这也涉及到 CPU 内核空闲的大量 IO 密集型操作。由于其中很多文件都很小,它们不会导致大量吞吐量,但它们会涉及大量开销......

    也许是一个有趣的阅读:https://cs.stackexchange.com/questions/19643/which-algorithms-can-not-be-parallelized

    【讨论】:

    • 有趣的答案,感谢您的链接。我对您的回答有两个问题:1)根据您的回答,我认为在这种情况下提高性能和减少构建时间的唯一方法是提高单核性能,对吗? 2) 是否有与在任务管理器或其他地方构建相关的 IO 绑定可视化?一种真正看到这是瓶颈的方法吗?
    • 不同的元素会产生影响:单核性能、内存速度、I/O 延迟、编译器的结构、正在构建的解决方案的细节......将自行决定构建时间。您可以尝试一些事情:使用 RAM 磁盘:stackoverflow.com/questions/47071194/… 和旧的(我认为仍然相关):aspnetmonsters.com/2016/02/…
    猜你喜欢
    • 2010-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多