几年前,我开始在Windows 7和Linux Ubuntu中使用Qt,并且它总是可以快速编译,而MinGW用于Windows。但是在过去几年左右,也许是由于Qt和MinGW版本的更新,我开始发现Windows内部编译速度的降低。我做了一些研究,试图找出MinGW与Linux相比开始变得如此之慢的原因(以前没有!),人们告诉我的一切是MinGW在Windows中比较慢,如果可能的话,它会更好只使用Linux。
由于我想继续我的项目,我遵循了这个建议,因为我使用的Linux相对没有问题。现在的情况是我必须回到Windows(现在更新到Windows 10)来对这个操作系统进行视觉校正,我需要再次使用MinGW,不得不像以前一样面对同样的问题。
但由于某些原因,似乎MinGW的缓慢变得更糟!虽然之前我至少能够在大约4分钟内编译应用程序,但现在我最后一次尝试它在 38分钟之前我放弃并进入睡眠状态 - 这是一个需要的项目只需1:03分即可在Linux中编译[在相同的编译配置下]!
嗯,我仍然意识到MinGW的缓慢,但是随着对网络上这个问题的快速研究显示,这只是太慢:所有回溯测试都可以在其他地方找到SO上的线程最多可以将2x-3x的时间用于编译项目,而不是38x + !!
所以我想知道在我的Windows中可能出现的这种夸张的缓慢发生的问题。我知道我最终安装了至少4种不同版本的MinGW;这会带来这个问题吗?
有趣的是,当使用-j
选项进行编译并在Qt Creator中与Process Explorer一起观看编译输出日志时,有时候编译简单暂停10秒或更长时间CPU使用率从~100%下降到接近5%,没有任何事情发生,直到它突然继续编译过程。我确定这个持续的暂停是上述平均时间的一部分,但我不知道为什么MinGW会出现这种行为。
答案 0 :(得分:2)
您可能想查看花费的时间。
有很多工具可以让你捕捉某个过程正在做的事情,我只说出其中两个:
但是要分析这些工具生成的报告,您需要深入了解。如果这不能帮助暂时禁用其他正在运行的服务并逐步编程(如果您想知道哪个程序导致问题)或立即禁用所有这些服务。 查看sysinternals显示的TaskManager或Procexp的CPU使用率峰值可能有助于识别阻塞cpu的那些组件。 如果您的防病毒导致冲突导致编译速度变慢,则可以定义异常,然后防病毒软件将不会扫描某些程序或路径。
因此,首先尝试使用已禁用的防病毒软件或甚至从干净的实时启动Windows CD进行编译过程可能更容易。