ldが遅い件
ldが遅すぎなのが気になって、ちょっとテストしてみました。
テストに使ったのは、チュートリアルのZIP作成サンプルです。
% time g++ -c -I/home/hamigaki/src/hamigaki -I/usr/include/boost-1_33_1 mk_zip.cpp real 0m16.954s user 0m15.685s sys 0m1.186s % time g++ -o mk_zip mk_zip.o -lboost_filesystem-gcc-mt-s -lboost_iostreams-gcc-mt-s -lz -lbz2 real 0m1.344s user 0m0.637s sys 0m0.622s
あれ?
全然速いですね。
もしや、デバッグシンボルのせいでしょうか?
デバッグシンボルを有効にしてみます。
% time g++ -c -g -I/home/hamigaki/src/hamigaki -I/usr/include/boost-1_33_1 mk_zip.cpp real 0m52.906s user 0m27.935s sys 0m8.295s % time g++ -o mk_zip mk_zip.o -lboost_filesystem-gcc-mt-s -lboost_iostreams-gcc-mt-s -lz -lbz2 real 0m24.375s user 0m14.589s sys 0m5.201s
予想通り、かなり遅くなりました。
この例だと、リンクよりもコンパイルに時間がかかっていますが、リンクにかかる時間はかなり幅があって、最悪の場合は1分20秒くらいかかってました。
ウイルスチェッカーやインデックスサービスなどの外的要因に左右されているのかも知れません。
さらに、もしかしてと思って、最適化を有効にして試してみたところ、
% time g++ -O2 -c -I/home/hamigaki/src/hamigaki -I/usr/include/boost-1_33_1 mk_zip.cpp real 0m28.531s user 0m18.247s sys 0m1.216s % time g++ -o mk_zip mk_zip.o -lboost_filesystem-gcc-mt-s -lboost_iostreams-gcc-mt-s -lz -lbz2 real 0m1.609s user 0m0.482s sys 0m0.497s
なんと、コンパイル・リンク共にデバッグビルドより速いという結果になりました。
shinichiro.hさん経由でココを見て、-pg付きのldもビルドしてたんですが、もういいです。
Cygwinの退行テストはリリースビルドでやろうと思います!
(21:53 追記)
リリースビルドだと変な警告が出たので、
BUILD="<debug-symbols>off"
でデバッグシンボルだけオフにすることにしました。