【发布时间】:2017-08-01 20:10:00
【问题描述】:
我正在使用 Visual Studio 编译一个包含大约 100 个 C++ 项目的大型解决方案。在编译期间,内存、CPU、磁盘和以太网都没有达到接近 100% 的利用率(根据任务管理器性能选项卡)。 CPU 通常低至 25%,内存磁盘利用率似乎低至 5-10%。
那么,如果没有 100% 的资源被利用,那么瓶颈是什么?是什么限制了我的编译速度?老实说,我希望它是CPU。不过好像不是。
我可能测量不正确吗?编译时我应该期望什么是限制资源?我怎样才能加快速度?如果还有其他限制(例如 RAM,但作为通过缓存的 I/O 或其他东西),那么测量瓶颈的正确工具/方法是什么?
附加信息:我确实使用最大并行项目数来构建 = 8。多处理器编译也启用了所有 Visual C++ 项目。我的机器有 8 个逻辑处理器。所以我真的认为我不只是最大化一个核心。这将在我的机器上显示为 12.5% 的使用率,(我经常在单线程应用程序中看到这种情况。)
【问题讨论】:
-
4 核机器上的 25% 可能意味着一个核被完全占用。您是否启用了multiprocessor compilation 或here?
-
我刚刚尝试用大约 100 个文件重建一个 C 项目。花了25秒。多处理器选项没有太大影响(低于 5%)。在我的 8 核机器上,有 4 个内核处于活动状态,但没有一个接近 100%。总体利用率保持在 25% 左右。所以,你的问题是有道理的。
-
我的机器是8核的。并且确实启用了并行构建和多线程编译。请参阅我的“附加信息”。