我在 SPEC 基准测试中对 GCC Profile-Guided Optimization 的开销进行了基准测试。我在一些基准测试中得到了一些奇怪的结果。事实上,我的两个基准测试在检测时运行得更快。
正常的可执行文件使用以下命令编译: -g -O2 -march=native
检测的可执行文件使用以下命令编译: -g -O2 -march=native -fprofile-generate -fno-vpt
我正在使用 GCC 4.7(准确地说是 Google 分支)。运行基准测试的计算机具有 Intel(R) Xeon(R) CPU E5-2650 0 @ 2.00GHz。
bwaves 是 Fortran 基准测试和 libquantum
结果如下:
bwaves-normal: 712.14
bwaves-instrumented: 697.22
=> ~2% faster
libquantum-normal: 463.88
libquantum-instrumented: 449.05
=> ~3.2% faster
我多次运行基准测试,认为这可能是 ma 机器上的问题,但每次我都确认它们。
我会理解某些程序的开销很小,但我看不出有任何改进的理由。
所以我的问题是:GCC 检测的可执行文件如何比优化的普通可执行文件更快?
谢谢