2017-12-29 10 views
0

g ++バージョンは5.3.0です。なぜg ++は-std = C++ 11で<algorithm>をコンパイルするのにずっと時間がかかりますか?

#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 

multipfle試み上同様の結果。ベクトルヘッダーを含めてわずかな減速(0.03秒)のみ。

+0

パーザが遅いかどうかを知ることは興味深いでしょう。バイトコードの作成です。 – Ctznkane525

+0

なぜ結果が似ていると思われるのかわからない、tbh。 C++ 11のコードを解析する複雑さを除けば、C++ 11のアルゴリズムライブラリに多くの関数が追加されています(http://en.cppreference.com/w/cpp/algorithm参照)。 –

+0

Ubuntu 17.04でg ++ 6.3.0を使って、NN = 98、11、14、17の 'g ++ -E -std = C++ NN c.cpp'を試しました。これは、前処理された出力をstdoutにダンプします。それぞれ9255,15746,16198、および16245行であった。それは違いのいくつかを説明しますが、必ずしもその大きさではありません。 –

答えて

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の問題です。これはおそらく、それ以降のリリースで修正されています。

関連する問題