2011年05月02日

Androidのビルドでccacheを使う

Makefile関連(*.mk)を変更した場合には一度クリーンしてからmakeする必要があります。

これは時間のかかることですが、ccacheを使うと時間短縮できます。

Androidではこれを簡単に使うことができます。

(English version of this page)



ccacheとは

ccache

ccacheは最初のコンパイル時にコンパイル結果を別のディレクトリに保存しておきます。そして次のコンパイルの時に、前回とファイルの内容やコンパイルオプションが一致するかどうかをチェックして、一致する場合には実際にコンパイルする代わりに保存しておいた内容を使用します。

ccacheがサポートするのはC/C++/Objective-C/Objective-C++で、Javaはサポートされていません。

高速化されるのは2回目以降のビルドです。

また、コンパイル結果を保存するためにディスクを消費します。

Androidのビルドでccacheを使う

Androidでは環境変数またはmake変数に USE_CCACHE=1 を追加するだけで簡単にccacheを使うことができます。ccacheコマンドはすでにprebuiltディレクトリに入っているので、新たにインストールする必要はありません。

前回使ったbuild.shに一行追加してみます。

$ cat build.sh
export ARCH_ARM_HAVE_TLS_REGISTER=true
export TARGET_ARCH_VARIANT=armv7-a-neon
export TARGET_CPU_SMP=true
export WITH_JIT=true
export JS_ENGINE=v8
export USE_CCACHE=1
time make -j8 showcommands > make.log 2>&1

ビルド1回目

$ rm -rf out
$ ./build.sh 
real	14m2.447s
user	111m48.370s
sys	6m38.000s

ビルド2回目

$ rm -rf out
$ ./build.sh 

real	8m45.569s
user	70m45.080s
sys	4m27.270s

AndroidのMakefile

以下のところでUSE_CCACHEを扱っています。

build/core/combo/select.mk

ifneq ($(USE_CCACHE),)
  ccache := prebuilt/$(HOST_PREBUILT_TAG)/ccache/ccache
  # prepend ccache if necessary
  ifneq ($(ccache),$(firstword $($(combo_target)CC)))
    $(combo_target)CC := $(ccache) $($(combo_target)CC)
  endif
  ifneq ($(ccache),$(firstword $($(combo_target)CXX)))
    $(combo_target)CXX := $(ccache) $($(combo_target)CXX)
  endif
  ccache =
endif

CCとCXXが置き換わっています。javaのビルドには影響しません。



トラックバックURL

トラックバック一覧

1. Using ccache to build Android  [ Koba's blog ]   2011年05月06日 18:27
Once when files related to Makefile (*.mk) is changed, it is necessary to do make clean; make. This is time-consuming work. It can reduce time using ccache. And it is very easy to use ccahe to build Android. (Japanese version) What is ccache? See this ...
2.  ccacheを使ったリビルドの高速化と、android_disk_vdiのビルド  [ Android Zaurusの日記 ]   2011年05月09日 17:40
先月のAndroid Builders Summit*1に参加した際に、USE_CCACHEを使ったビルドの高速化*2の話があって、そういえば使ってなかったなと思い出して、また、tetsu_kobaさんがエントリ*3書いて、Android Buildingに凸ってJBQさんからキャッシュ増やしてねというお返事が来てた*4の

コメントする

名前
URL
 
  絵文字
 
 
記事検索
最新コメント
アクセスカウンター
  • 今日:
  • 昨日:
  • 累計:

QRコード
QRコード