Spring2.0.4でパフォーマンスが大幅向上
SpringFrameworkのBeanのインスタンス取得が最大12倍速くなったそうです。
2.0.4リリースアナウンスより引用
Regarding the performance improvements, repeated creation of Spring bean instances is up to 12 times faster in this release than previous versions of Spring 2.0. AspectJ-based weaving performance has also increased by a significant factor.
2.0.3と2.0.4のベンチマーク比較
既にベンチマークのエントリでも速くなったと書きましたが、せっかくなので2.0.3と比較してみました。コードはGuiceベンチマークを流用してます。数値は3回実行した平均値をとりました。
バージョン | AOP無しインスタンス取得 | AOP有りインスタンス取得 |
---|---|---|
2.0.3 | 4,650 creations/s | 2,037 creations/s |
2.0.4 | 26,140 creations/s | 4,360 creations/s |
比 | 5.62 | 2.14 |
このケースでは12倍までは出ませんでしたが、かなりパフォーマンスが向上している事が分かります。AOPはAspectJではない旧来の(?)Proxyなので、AspectJにしたらAOP有りの方もより差が大きくなると思われます。
ちなみに突然Springがチューニングした理由として先日お会いしたid:koichikさんが「Guiceが出てきたからだろうね♪」と仰ってましたが、タイミングといい確かにそうなのでしょうね。これまではパフォーマンスの事を言われても「事実上問題にはならない。その部分のパフォーマンスで困ったという事例は聞いた事が無い」というスタンスでしたので。
ともあれ (JW),速くなったのはあくまでBeanのプロトタイプなインスタンス取得処理(とAspectJのweaving)なので,一般的なアプリケーションに与える影響はそれほどではないのではと思います.