torutkのブログ

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

Java/C++ビルド時間(続)

id:torutk:20071104のビルド時間比較の続き、C++のACEを単独でビルドした時間を計測。C++がコードサイズに指数的にビルド時間がかかるのではないかと推測。

そこで、ACE+TAOの一部分であるACE部分だけビルドした時間を計測しました。また、同規模のJavaプロダクトとして、Apache Tomcatをビルドする時間を計測します。両プロダクトのメトリクスを以下の表に示します。

プロダクト 総行数 命令行数 ファイル数 クラス数
ACE 5.6.1 307,819 79,930 1248 841
Tomcat 6.0.14 313,269 118,018 1049 1510

ビルド環境は前回と一緒です。両プロダクトをビルドするのに要した時間を以下の表に示します。

プロダクト名 ビルド時間
ACE 5.6.1 00:10:40
Tomcat 6.0.14 00:00:46

Javaの場合、規模が3倍になるとビルド時間が4倍かかっております。一方、C++は規模が3倍になるとビルド時間が15倍かかっています。予想通り、Javaコンパイル時間が規模に1次比例するのに対してC++は規模に二乗で比例しています。

C++プロダクトでビルド時間を抑えるには

一枚岩のソースではなく、個別に独立してビルドできるパッケージで構成するしかなさそうです。パッケージ間の依存は極力少なくするような工夫が必要になります。