为什么g ++需要更长的时间来编译 用-std = c ++ 11?

问题描述 投票:0回答:1

g ++版本是5.3.0。

#include <algorithm>
int main() {
    return 0;
}

测试$ time g ++ test.cpp

real    0m0.203s
user    0m0.073s
sys     0m0.031s

test $ time g ++ test.cpp --std = c ++ 11

real    0m0.761s
user    0m0.554s
sys     0m0.130s

多次尝试的结果相似。包含矢量标题只有轻微的减速(0.03s)。

c++11 g++ stl-algorithm
1个回答
1
投票

直截了当的答案是,编译显然有更多。使用-Q -ftime-report GCC将打印出配置文件统计信息。请记住,左侧的部分不可靠,因为每次运行命令时它都会更改,但TOTAL始终保持一致。对于C ++ 03和C ++ 11:

Execution times (seconds)
 phase setup             :   0.00 ( 0%) usr   0.00 ( 0%) sys   0.00 ( 0%) wall    1189 kB (16%) ggc
 phase parsing           :   0.03 (100%) usr   0.02 (100%) sys   0.06 (100%) wall    6301 kB (83%) ggc
 preprocessing           :   0.01 (33%) usr   0.01 (50%) sys   0.04 (67%) wall     488 kB ( 6%) ggc
 parser (global)         :   0.00 ( 0%) usr   0.01 (50%) sys   0.00 ( 0%) wall    3626 kB (48%) ggc
 parser struct body      :   0.02 (67%) usr   0.00 ( 0%) sys   0.01 (17%) wall     778 kB (10%) ggc
 parser function body    :   0.00 ( 0%) usr   0.00 ( 0%) sys   0.01 (17%) wall     436 kB ( 6%) ggc
 TOTAL                 :   0.03             0.02             0.06               7558 kB

Execution times (seconds)
 phase setup             :   0.00 ( 0%) usr   0.00 ( 0%) sys   0.00 ( 0%) wall    1384 kB (11%) ggc
 phase parsing           :   0.05 (100%) usr   0.03 (100%) sys   0.10 (100%) wall   10953 kB (88%) ggc
 |name lookup            :   0.00 ( 0%) usr   0.01 (33%) sys   0.01 (10%) wall    1301 kB (10%) ggc
 preprocessing           :   0.01 (20%) usr   0.00 ( 0%) sys   0.03 (30%) wall     878 kB ( 7%) ggc
 parser (global)         :   0.01 (20%) usr   0.01 (33%) sys   0.01 (10%) wall    4592 kB (37%) ggc
 parser struct body      :   0.02 (40%) usr   0.00 ( 0%) sys   0.01 (10%) wall    2837 kB (23%) ggc
 parser function body    :   0.01 (20%) usr   0.01 (33%) sys   0.01 (10%) wall     478 kB ( 4%) ggc
 parser inl. meth. body  :   0.00 ( 0%) usr   0.01 (33%) sys   0.03 (30%) wall     937 kB ( 8%) ggc
 symout                  :   0.00 ( 0%) usr   0.00 ( 0%) sys   0.01 (10%) wall       0 kB ( 0%) ggc
 TOTAL                 :   0.05             0.03             0.10              12490 kB

这是12490 - 7558 = 4942 KB的差异,而不是那么大的区别。现在,为什么GCC 5.3.0有这么大的差异,这是一个QoI问题,可能在以后的版本中得到修复。

© www.soinside.com 2019 - 2024. All rights reserved.