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++プロダクトでビルド時間を抑えるには
一枚岩のソースではなく、個別に独立してビルドできるパッケージで構成するしかなさそうです。パッケージ間の依存は極力少なくするような工夫が必要になります。