SmartPhone開発日記【あいほーん】AndroidNDKで並列コンパイル

AndroidNDKを使うにあたって、大量にソースコードが増えてきた場合、マルチコアCPUによる並列ビルドを使うとコア数に合わせてビルド時間が短縮されます。XCodeは自動的にやってくれるものの、AndroidNDKではどうするのかよくわからずしばらくドキュメントに目を通していたところ、ndk-buildのオプションでスレッド指定するとすべてのCPUを使ってくれるようです。

やり方は非常に簡単!
$ ndk-build --jobs=4
とすることで4つスレッドが使われ、旧MacBookPro(2Core4Thread)のCPUでまんべんなく使われるようになります。他、AndroidNDKでのネットワーク分散ビルドのためのdistcc/distccdを見ていたところなかなかやり方がわからず、妥協。
EC2 in Japanのベクトルコンピュータを借りて分散させたりすると相当作業時間の短縮が見込めると思うんだけど・・・・・。先日ESEC展示会でアマゾンの人と話していて、EC2は単位時間あたりの課金でベクトルコンピュータ相当のインスタンスを借りてもそこまで料金的には高くないようで、$100を超えないように使ったりも出来て割と現実的です。

C++コンパイルは非常に時間がかかる性質があり分散コンパイルによる効果が高いのですが、Cのソースだと単一ファイルのコンパイルが短いので分散してもそこまでリターンは見込めないため、分散をやりたい人はその点を指標に導入を検討すると良いと思います。