コンパイル時間とファイルサイズ
前回の続き。コンパイルオプションによって、コンパイル時間とファイルサイズが変化することを確認した。
気になること
前回のコードをコンパイルしているときに気になったことがあった。
- コンパイル時間が長い(15秒~1分10秒)
- exeのファイルサイズが大きい(60KB~130KB)
- exeの初回実行時間が長い(10秒)
このうち、コンパイル時間とファイルサイズは、コンパイルオプションで変動する。
make.exe
mingw32-make.exe | コンパイル時間 | ファイルサイズ | オプション |
---|---|---|---|
4.6.2 | 1分35秒 | 130KB | g++ -Wall -std=c++11 -o program.exe program.cc `pkg-config gtkmm-3.0 --cflags --libs` -mwindows |
5.3.0 | 1分10秒 | 130KB | g++ -Wall -std=c++11 -o program.exe program.cc `pkg-config gtkmm-3.0 --cflags --libs` -mwindows |
最初、間違ってMinGW4.6.2のmingw32-make.exeを使っていた。 5.3.0にするとコンパイル時間が早くなった。
コンパイルオプション
-s
と-O3
のオプションについて以下のパターンを試してみた。
パターン | コンパイル時間 | ファイルサイズ |
---|---|---|
なし | 1分10秒 | 130KB |
-s -O3 |
45秒 | 60KB |
-s |
20秒 | 64KB |
-O3 |
15秒 | 111KB |
完成版としては-s -O3
が理想か。実行速度の最適化をしているしファイルサイズも最小だから。
でも、コンパイル時間は長い。
実行時間の最適化はどうやって計測すればいいのかわからない。 どのみち、こんな小さいコードでは大差ないだろうけど。