Visual Studio 2015 C++编译期间电脑卡顿,直到编译完成。

3

Windows 10 x64 Visual Studio 2015社区版

我已经尝试重新格式化电脑,重新安装,但都没有用。基本上,每次C++在“生成代码”时,它都会冻结我的电脑,直到编译完成。如果代码很小,它也会冻结,但需要编译的时间不同。这种冻结会完全阻止我使用电脑,甚至会冻结屏幕和我运行的任何视频游戏。

i5 3570k 12 GB Corsair 1600 Mhz 500 GB HDD 7200 RPM

我该怎么办?


你能在编译运行之前打开任务管理器或进程浏览器吗?CPU使用率太高了吗? - qxg
请描述一下你的“编译”过程。你是只进行构建和运行吗? - ChiefTwoPencils
1
@ChiefTwoPencils 只是一个 Release x64 构建,使用默认的 VS2015 项目设置。CPU 使用率约为 ~5%,当它正在生成代码时,我无法看到我的 CPU 使用率,因为它会完全冻结直到完成。 - Raúl Sanpedro
当你列出内存的品牌和速度时,这听起来像是一个自建系统。请确认您已安装了所有正确的硬件驱动程序。编译需要大量磁盘操作,如果您没有正确的芯片组驱动程序(以允许Windows有效地进行磁盘访问),则所有操作都会变得缓慢。 - 1201ProgramAlarm
<sarcasm> 可能你应该运行更简单的构建。当你使用所有CPU时,你在想什么?操作系统足够智能来管理这个简单的规则吗?</sarcasm> - user4590120
3个回答

1

如果没有看到系统信息(.nfo)文件,很难说。但是有一些值得检查的事情:

  1. 查看是否启用了 /MP 选项(项目选项->C/C++->所有选项->多处理器编译)。尝试明确禁用它;
  2. 系统冻结也可能是由于硬盘状态差而发生。使用任何HDD验证工具进行检查,查看您的计算机是否在大量文件复制等HDD密集型操作中冻结。

尝试禁用 /MP,进行重建,现在不会再冻结我的电脑了!但是为什么 /MP 会如此可怕地导致它冻结呢?(100%的 CPU 使用率 - 如果没有解决方法,我将选择此答案作为解决方案) - Raúl Sanpedro
如果启用了/MP标志,Visual Studio将为系统中每个有效处理器创建一个编译器实例。您可以在标志后面使用可选数字来限制处理器数量,例如/MP2 - Ari0nhh
1
一个多处理器机器有什么用呢?而在单个CPU的机器上你会做些什么? - user4590120

1
在 Visual Studio 2015 中,您可以转到 工具->设置,搜索 VC++项目设置 并调整 最大并发C++编译。默认值为0,表示“使用所有处理器”。

多CPU机器有什么用途? - user4590120
我不明白你想说什么。 - Felk
如果您总是需要为前台进程保留至少一个CPU,那么为什么要使用n-CPU机器呢?这是操作系统控制进程优先级的任务。那单个CPU的机器呢? - user4590120
当VS使用我的4个核心进行编译时,我的电脑变得非常缓慢,这已经足够让我感到痛苦。显然,它将Visual Studio的优先级设置得太高了。 - Felk

0

对另一个答案的评论证实了这是一个CPU问题,而不是IO问题。但两种情况的解决方案都是相同的。降低Visual Studio的进程优先级。您可以在任务管理器中轻松完成此操作。这将降低CPU和IO优先级,因此其他所有内容现在都具有相对较高的优先级。

然而,您仍然会遇到100%的CPU负载。也就是说,前台获取所需的一切,编译器获得剩余的CPU时间。当有工作要做时,没有空闲CPU的意义。(当编译器等待HDD读取文件时,它可能会略微降低)


3
不。你不想降低IDE的优先级,而是编译器/链接器的优先级。 - user4590120
编译器和链接器都是IDE的短暂子进程。由于它们是子进程,它们继承了IDE的优先级,而且由于它们是短暂的,所以很难直接设置它们。 - MSalters
我在添加评论时就知道这个问题。你不想改变IDE的优先级的原因是,你希望在编译器/链接器运行时保持其响应性。而且当其他具有正常优先级的进程需要CPU时间时,你也希望保持其响应性。 - user4590120

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接