为什么g ++需要更长的时间来编译 用-std = c ++ 11?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么g ++需要更长的时间来编译 用-std = c ++ 11?相关的知识,希望对你有一定的参考价值。
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)。
答案
直截了当的答案是,编译显然有更多。使用-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问题,可能在以后的版本中得到修复。
以上是关于为什么g ++需要更长的时间来编译 用-std = c ++ 11?的主要内容,如果未能解决你的问题,请参考以下文章