ベンチマークを更新しました
SpringFramework 2.0.4で、ちょうどベンチマークに関係する部分のパフォーマンスチューニングを行ったとの事なので(詳しくは次のエントリ参照)、再度ベンチマークを行いました。Seasar2も最新版に入れ替えた上で、セットアップ処理コードを一部変更しています。
計測内容
ベンチマーク結果
- get instance (NO AOP)- Spring: 24,336 creations/s Guice: 304,878 creations/s S2: 26,553 creations/s - get instance (WITH AOP) - Spring: 3,967 creations/s Guice: 45,065 creations/s S2: 26,232 creations/s - call service (WITH AOP) - Spring: 101,971 calls/s Guice: 843,340 calls/s S2: 1,270,329 calls/s - get instance (NO AOP)- Spring: 24,618 creations/s Guice: 304,878 creations/s S2: 25,806 creations/s - get instance (WITH AOP) - Spring: 3,766 creations/s Guice: 42,662 creations/s S2: 26,448 creations/s - call service (WITH AOP) - Spring: 103,727 calls/s Guice: 959,881 calls/s S2: 1,271,474 calls/s
前回と比べると、インスタンス取得処理でSpringのチューニング成果が如実に現れていますね。AOP有りも無しもGuiceとの差が10倍くらいまで縮まり*1、AOP無しではSeasar2とほぼ並んだと言って良さそうです。
逆にSpringはAOPのインスタンス取得や実行の遅さが際立ちますが、AspectJを使うとだいぶ数値が違ったりするんでしょうか。やはり試さないといかんかも。
それと、S2がAOP有り無しでパフォーマンスが変わらないのが驚きです*2。weaveするタイミングが他のコンテナと違うとかなのでしょうか?でも実行は一番速いから、単純に遅延してるとかでは無さそうだし…。
実行したベンチマークコード、変更点などは
以下のwikiに置きました。
Guice, Spring, Seasar2 ベンチマーク(第2回)
なお前回はページタイトルがSpringではなく"Sring"になっているという大変恥ずかしい事になっていたので(しかしオレンジニュースに載ったので変えたりデリゲートする勇気が無かった)、今回は気をつけました:-)
wikiなので、改善点や追加、情報などありましたら書き込んで頂けると嬉しいです。