|
||||||||||||
| 前のページ 1 2 3 4 | ||||||||||||
| リフレクション情報取得の比較 | ||||||||||||
|
それでは次にリフレクション情報を取得する速度が実際にどれくらい違うのか測定してみましょう。 今回は両コンテナのリフレクション情報の処理を行うクラスを直接呼び出して測定します。Seasar2ではBeanDescImpl、SpringではBeanWrapperImplというクラスです。 |
||||||||||||
| 測定プログラム | ||||||||||||
|
Seasar2での測定プログラムはこのようになります。 リフレクション情報取得プログラム(Seasar2)
long start = System.currentTimeMillis();
BeanDescImplをBeanWrapperImplにすると、Springの測定プログラムになります。 |
||||||||||||
| リフレクション情報取得の結果 | ||||||||||||
|
リフレクション情報の処理にかかる時間の結果は図3のようになりました。 ![]() 図3:リフレクション処理 Seasar2の方が速く、1,000個のリフレクション処理で1,300ミリ秒の差がつきました。 |
||||||||||||
| 理由 | ||||||||||||
|
この差の理由には2つあると考えられます。 1点目として、Seasar2ではリフレクション情報取得処理を独自実装していますが、SpringではJDKのIntrospectorを使用しています。この違いが速度の差となっていると思われます。 2点目はキャッシュ実装の違いです。取得したリフレクション情報をSeasar2ではHashMapへ保持していますが、SpringではWeakHashMapへ保持しています。 |
||||||||||||
| おわりに | ||||||||||||
|
本連載の第1回では非常にベーシックな機能の比較について紹介しました。単純にコンテナを生成してコンポーネントを取得するだけですが、これだけ差がついたことに驚かれている方も多いのではないでしょうか。 次回はDI処理のパフォーマンス比較について紹介します。 |
||||||||||||
|
前のページ 1 2 3 4 |
||||||||||||
|
|
||||||||||||
|
|
||||||||||||
|
||||||||||||
|
|
||||||||||||
|
||||||||||||
|
|
||||||||||||
|
||||||||||||
|
|
||||||||||||
|
||||||||||||
|
|
||||||||||||
|
||||||||||||


