繁体   English   中英

为什么g ++需要更长的时间进行编译 <algorithm> 与-std = c ++ 11?

[英]Why does g++ take much longer to compile <algorithm> with -std=c++11?

g ++版本是5.3.0。

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

测试$时间g ++ test.cpp

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

测试$时间g ++ test.cpp --std = c ++ 11

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

在多次尝试中,结果相似。 包含向量标头的情况只有很小的降低(0.03s)。

直接的答案是,显然还有更多的要编译。 使用-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问题,可能已在以后的版本中修复。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM