TOPシステム開発> コンポーネント取得の比較
パフォーマンス徹底比較!! Seasar2 VS Spring
パフォーマンス徹底比較!! Seasar2 VS Spring

第1回:どっちが速いSeasar2 VS Spring
著者:株式会社電通国際情報サービス  比嘉 康雄
         株式会社アークシステム  本間 宏崇
         日本ヒューレット・パッカード株式会社   2006/5/18
前のページ  1  2  3   4  次のページ
コンポーネント取得の比較

   次は生成したコンテナからコンポーネントを取得する処理について見てみましょう。コンポーネント取得時にそれぞれのDIxAOPコンテナが行う処理は次のようになります。
順番 Seasar2 Spring
1 コンテナ生成でリフレクション情報はキャッシュ済み コンポーネントのリフレクション情報をキャッシュする
2 コンポーネントを生成する コンポーネントを生成する

表5:コンポーネント取得時に行う処理

   今度はSeasar2の方が速いように予想できます。


測定プログラム

   Seasar2における測定プログラムはこのようになります。

コンポーネント取得プログラム(Seasar2)
DecimalFormat format = new DecimalFormat("00000");
long start = System.currentTimeMillis();
for (int i = 0; i < times; i++) {
   Object component = container.getComponent("nullBean" + format.format(i));
}
long end = System.currentTimeMillis();
// end - startを記録

   times変数にはコンポーネント数(1,000個、2,000個、5,000個、10,000個)が入ります。Springでも同様のプログラムとなります。


コンポーネント取得の結果

   それでは結果を見てみましょう。

コンポーネント取得
図2:コンポーネント取得

   予想通りSeasar2の方が速い結果となりました。差は10〜30倍ほどで、実際の時間にするとコンポーネント1,000個の場合に1,400msほどになります。

   ちなみに、これはコンポーネントをはじめて取得するときの結果です。2度目以降の取得では、すでに生成されたコンポーネントが返されるだけなので、Seasar2とSpringの両方ともほぼ同じ速度になります。


理由

   Seasar2はすでにリフレクション処理を終えていますがSpringはこのタイミングでリフレクション処理を行うため、このような結果になったといえます。

   それにしてもコンテナ生成時の結果とあわせて見ると、Springはリフレクション処理にずいぶん時間が掛かっているように思えます。

前のページ  1  2  3   4  次のページ


株式会社電通国際情報サービス  比嘉 康雄
著者プロフィール
株式会社電通国際情報サービス  比嘉 康雄
1992年、電通国際情報サービス入社。1996年にOracleに触れたことでソフトウェアの魅力に開眼。その後、日本産オープンソース「Seasar」の開発を中心になって行い、2004年5月に「Seasar2」をリリース。
http://www.isid.co.jp/
http://d.hatena.ne.jp/higayasuo/

株式会社アークシステム  本間 宏崇
著者プロフィール
株式会社アークシステム  本間 宏崇
プログラマ。2004年より(株)アークシステムに所属。最近の興味はペアプログラミング・テスト駆動開発・プロジェクト自動化など。現在はWebアプリケーションフレームワーク「Teeda
http://teeda.seasar.org/ja/)」の開発に携わっている。

日本ヒューレット・パッカード株式会社
著者プロフィール
日本ヒューレット・パッカード株式会社
今回、Seasar2とSpringのパフォーマンスの検証を行う際の環境を提供しています。

INDEX
第1回:どっちが速いSeasar2 VS Spring
  はじめに
  コンテナ生成の比較
コンポーネント取得の比較
  リフレクション情報取得の比較