MinGW编译速度过慢

4
自从几年前,我开始在Windows 7和Linux Ubuntu上使用Qt,MinGW用于Windows,编译速度一直很快。但是在过去的几年中,也许是由于Qt和MinGW版本的更新,我开始在Windows内部检测到编译速度下降。我进行了一些研究,试图找出为什么MinGW在Windows中变得如此缓慢(之前不是这样的),所有人告诉我的是,在Windows中,MinGW比较慢,并且如果可能的话,最好只使用Linux。
由于我想要继续我的项目,所以我遵循了建议,自那以后我一直在使用Linux,相对地没有什么问题。现在的情况是,我必须回到Windows(现在已更新到Windows 10)来进行视觉修正,并且我需要再次使用MinGW,面对之前的同样问题。
但是由于某种原因,似乎MinGW的速度变得更加缓慢!以前,我至少能够在大约4分钟内编译该应用程序,但是最后一次尝试时,花费了38分钟才放弃并去睡觉 - 而这只是一个在Linux下编译只需1:03几分钟即可完成的项目[在相同的编译配置下]!
虽然我仍然知道MinGW的速度较慢,但是在网络上对这个问题进行快速研究后发现,它实在是太慢了:所有可以在其他SO线程中找到的反向测试都显示,编译一个项目最好需要2倍-3倍的时间,而不是38倍以上!!
因此,我想知道我在Windows中可能遇到的哪些问题导致这种夸张的缓慢发生。我知道我最终安装了至少4个不同版本的MinGW;这可能导致了问题吗?
有趣的是,在使用-j选项进行编译并观察Qt Creator中的编译输出日志以及进程资源管理器时,会有一些时刻,编译会简单地暂停10秒或更长时间,并且CPU使用率从其约100%降至接近5%,直到突然恢复编译过程。我确信这些不断的暂停是上面平均时间的一部分,但我不知道为什么MinGW会出现这种行为。
1个回答

2
你可能想要检查时间花在哪里了。
有许多工具可以捕获某个进程正在执行的操作,我只举两个例子: 但是要分析这些工具生成的报告,你需要相当深入的理解。如果这不起作用,可以暂时禁用其他正在运行的服务和程序逐步进行(如果你想知道哪个程序引起了问题),或者一次性禁用所有程序。 观察任务管理器或sysinternals的Procexp显示的CPU使用率峰值也可能有助于识别阻塞CPU的组件。 如果你的杀毒软件是导致编译速度变慢的原因,你可以定义异常,然后杀毒软件将不会扫描某些程序或路径。
所以,也许最好先尝试禁用防病毒软件或者使用干净的 Windows Live CD 来进行编译过程。

禁用防病毒软件是个好主意,因为我在这段时间内更换了它,并且它对清理和运行“qmake”都表现出了很有前途的迹象。不幸的是,在构建时,出现了相同的缓慢和暂停,所以问题不在于此。 - Momergil
@Momergil 我同意使用进程监视器(如此答案所建议)。它可以让你轻松地监视一个进程的活动(这将是编译器和任何其他相关进程)。记得过滤输出,只关注那些重要的进程。 - Hadi Brais
@Marged,你说得对,使用那些应用程序确实很有效! :) 我使用了 ProcMon 并发现 IBM 的一个软件 Raport Management Service(不是杀毒软件,但工作方式相似)在编译过程中被不断调用;一旦完成,我就能在 2 分钟内完成工作!\o/ 现在你的答案实际上并没有回答问题,所以你能否稍微编辑一下,更加关注其他软件导致速度变慢的原因?然后我会接受你的答案!谢谢! - Momergil

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