C++で少しでもビルド速度を速くする方法
結論
- キャッシュを使う
- 不要なinclude削除
- static or dynamic library化する
- 並列コンパイルする
- 分散コンパイルする
- いいパソコンを使う
C++のビルドをちょっとでも高速化したかったので、
どうすれば早くなるのかを調べたのでまとめました。
どれか一つをやるというよりかは、複数の手法を組み合わせていくのがいいと思います。
キャッシュを使う
ccacheのように、コンパイル結果をキャッシュしておくソフトを使うことで、
2回目以降のビルドは差分だけをコンパイルし直すため早くなります。
といっても、多分使わない方が珍しいと思いますが。
不要なinclude削除
C++で不要なincludeを減らすのように、
不要なincludeを減らすことでコンパイル時間の短縮化と、キャッシュを最大限活用することができます。
Static Library or Dynamic Library化する
切り出せる部分はライブラリとして切り出し、先にコンパイルしておくことで、
本体のコンパイル時間が短縮されます。
簡単に早くなりますが、ライブラリの切り出し方を工夫しないと効果が無い場合があります。
Static Libraryの場合はリンクが必要なので、リンク時間は減らせませんが、
コンパイル時間は省略できるため大幅に早くなります。
Dynamic Libraryはリンク時間が不要になりますが、その分実際の実行時に時間がかかります。
代わりに、ライブラリの部分だけ入れ換えるといったことができます。
ただし、iOSでは使えません…(´・_・`)
並列コンパイルする
makeにはjオプションがあり、指定した数だけ並列実行されます。
多くしすぎると逆効果らしく、一般的にはコア数×2ぐらいを指定すると良いそうです。
分散コンパイルする
distcc等を使って分散コンパイルをすることで、劇的にコンパイル時間を短くできます。
ただしその分だけPCが必要なのと、Xcodeは非対応です…(´・_・`)
いいパソコンを使う
当たり前ですが、メモリ、CPU、SSDの性能を上げると早くなります。
ただし、高いPCはコスパが悪いので、他の手法と組み合わせて上手い具合に良いところを見つけてください。