CentOS5.3にccacheを入れてみました。EPELサイトにバイナリパッケージがあるので、/etc/yum.repos.d/にepelのrepo設定ファイルを置いていれば、yum install ccacheでOKです。
実際、どの程度早くなるのかを試すべく、log4cpp-1.0をビルドして測ってみました。時間測定はtimeコマンドの出力のrealを取得しました。
log4cppは、コンパイルすると中間オブジェクトファイル(*.o)が95個できる規模のC++コードです。
ccacheを使ったビルド時間
ビルド時間は、timeコマンドのreal項を取っています。
条件 | ビルド時間 | 備考 |
初回 | 1m12.682s | |
2回目 | 0m27.187s | make clean後make |
計測に使ったコマンド
ビルド時間計測(timeコマンド)
$ time make : real 1m12.682s user 0m50.629s sys 0m20.425s
ccacheのキャッシュクリアと統計情報ゼロリセット
初回値を計測するときに、ccacheのキャッシュを完全クリアしました。
$ ccache -C; ccache -z
2回目のビルド時にコンパイル生成物を削除
make cleanで削除しています。
注意点
環境変数PATHが先にccache版gcc/g++を引き当てる
EPELにあるccacheバイナリパッケージをインストールすると、デフォルトで/usr/binより先に/usr/lib/ccacheを環境変数PATHに加えます。(/etc/profile.d/にccache.shが入ることによる)
そのため、コマンドラインでパス指定なしにg++と実行すると、ccache版g++が実行されてしまいます。
-gオプション指定時は、ccacheが効かない
log4cppを展開し、configure --enable-debugとしたとき、ccacheの効果がまったく表われていません。-gオプションがあると、ccacheが抑制されるようです。