torutkのブログ

ソフトウェア・エンジニアのブログ

ccacheでビルド時間短縮

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が抑制されるようです。

ディレクトリで同じソースをビルドすると

log4cppを展開してビルドした後、2回目のビルドを別ディレクトリに再度展開してconfigureしてから実行しても、ccache効果が得られました。