由于 windows 更新,gcc 编译时间增加

gcc compilation time increased due to a windows update

我的团队正在使用 arm-none-eabi-gcc.exe (Sourcery CodeBench Lite 2012.09-63) 4.7.2Visual Studio 2013 中编译 C++。

我的同事最近升级了他们的机器。

旧电脑:

  1. Windows 7 x64
  2. 16GB DDR3
  3. 英特尔 3770K
  4. SSD

新 PC:

  1. Windows 10 x64
  2. 16GB DDR4
  3. 英特尔 7700k
  4. SSD

完全相同的 96 个文件集的编译时间是:

旧:60 secs
新:104 secs

尽管更快 CPU 和更快的内存,但编译变得 更慢

我在几位同事的计算机上观察到这一点。

此时,您可能会认为这是一个硬件问题,除了以下几点:我从 Sep-2017 开始就拥有 new PC 配置,突然之间,在没有任何硬件更改的情况下,我注意到 Oct/Nov-2017 我的编译速度急剧下降。

因此,我认为是 windows 更新导致了这个问题。

问题

我怎样才能明确地推断出这种放缓的原因?

澄清 #1

我并不是说我的编译在 Windows 更新期间变慢了。我的意思是过去发生的一些 windows 更新导致我的编译速度变慢。

更新 #1

我正在使用一个空白 .cpp 文件并将其编译 100 次,但我仍然看到 Windows 7 PC 和 Windows 10 之间完全相同的时间差异。

我 99% 确定它是 windows 在 gcc 中的 "bug"。我安装了 gcc from the ARM website 并且发现了同样的问题。

然而,当我使用 cl.exe 编译一个空白文件 100 次时,它只需要 5 秒 与 Windows 7 和旧版本 [=94 上的 gcc 相同=] 10 (Oct/Nov-ish)

我的测试脚本是:

set GCC_EXE="C:\Program Files (x86)\GNU Tools ARM Embedded 2017-q4-major\bin\arm-none-eabi-gcc.exe"
set startTime=%time%
echo off
%GCC_EXE% -c "empty.cpp" -o ".\empty.obj"
%GCC_EXE% -c "empty.cpp" -o ".\empty.obj"
%GCC_EXE% -c "empty.cpp" -o ".\empty.obj"
...

Windows Defender 在构建期间重复扫描 GCC 二进制文件。

禁用 "Real time protection" 解决了问题。

此外,将可执行文件所在的文件夹添加到排除列表也有效。