为什么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?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 c 中的幂函数需要比预期更长的时间

为啥我使用 modin.pandas 比使用 Pandas 需要更长的时间 [ray]

能不能只使用G++这一个程序来编译源文件?

操作系统编译时间

用 std::chrono 计算持续时间在需要很长时间时给出 0 纳秒

Boost.python 和 OMP