JInspired, JXInsightプロダクトアーキテクトを務めるWilliam Louth氏は10月31日(米国時間)、「Benchmark Analysis: Guice vs Spring」の題目のもとフレームワークの性能評価結果を紹介している。JXInsightはパフォーマンステスト管理ソリューション。Louth氏は大規模分散システムの経験が深く、Javaで構築した大規模分散システムのパフォーマンス関連分野で第一人者のひとりとされている。

Spring FrameworkはJavaで開発されたJ2EEアプリケーションフレームワーク。DIを実現するフレームワークで、同分野のフレームワークとしては息の長い古典的なフレームワークと言ってよい。関連プロダクトも多数存在し、同フレームワークをシステム開発に採用している企業は多い。

Google GuiceはJavaで開発されたDI(Dependency Injection)フレームワーク。シンプルなアーキテクチャでアノテーションやジェネリックを活用している。主権をJavaのソースコードに残したままDI化を実現しているのが特徴で、設定ファイルを書く必要もなければ、ネーミングルールを暗記する必要もない。さらに生成されるソースコードがほかのDIフレームワークと比較して高速に動作するという特徴がある。

Spring FrameworkとGoogle Guiceのパフォーマンス比較の例(Benchmark Analysis: Guice vs Spring から抜粋) - まだGuiceと同等とはいかないが、開発中のSpring 2.5はなかなか健闘している

Spring Frameworkの動作が遅いのではないかという問題は、Spring Framework 2.0の登場以来指摘され続けてきた。仕組みや用途から考えてGoogle Guiceと比較するのはフェアではない気もするが、これまでのGuiceとSpringではGuiceの方が圧倒的に速かった。これを受けてかどうかはわからないが、Springでは2.0以降、バージョンアップのたびにパフォーマンスの改善を重ねている。そして現在開発されているSpirng 2.5では大幅な速度改善が実現されることになっている。

William Louth氏の公開した結果を見るかぎりでは、まだGuiceと並ぶほどにはなっていないが、Spring 2.5はこれまでと比較するとかなり奮闘しているようだ。コンカレントの場合のみ性能が離れているが、コンカレントとシングルトンの両方を使っている場合はSpringの方が良い成績を納めている。これはひとつの結果にすぎないが、次期Spring Framework 2.5のパフォーマンスが優れていることに間違いはなさそうだ。