由于 windows 更新,gcc 编译时间增加
gcc compilation time increased due to a windows update
我的团队正在使用 arm-none-eabi-gcc.exe (Sourcery CodeBench Lite 2012.09-63) 4.7.2
从 Visual Studio 2013
中编译 C++。
我的同事最近升级了他们的机器。
旧电脑:
- Windows 7 x64
- 16GB DDR3
- 英特尔 3770K
- SSD
新 PC:
- Windows 10 x64
- 16GB DDR4
- 英特尔 7700k
- 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" 解决了问题。
此外,将可执行文件所在的文件夹添加到排除列表也有效。
我的团队正在使用 arm-none-eabi-gcc.exe (Sourcery CodeBench Lite 2012.09-63) 4.7.2
从 Visual Studio 2013
中编译 C++。
我的同事最近升级了他们的机器。
旧电脑:
- Windows 7 x64
- 16GB DDR3
- 英特尔 3770K
- SSD
新 PC:
- Windows 10 x64
- 16GB DDR4
- 英特尔 7700k
- 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" 解决了问题。
此外,将可执行文件所在的文件夹添加到排除列表也有效。