|
||||||||||||
| 前のページ 1 2 3 4 次のページ | ||||||||||||
| AOPメソッド実行の処理 | ||||||||||||
|
ここでは非常にシンプルな処理を用います。シンプルだからこそAOPによるオーバーヘッドが明確にでると考えられます。 またバイトコードをカスタマイズするライブラリとして、Seasar2はJavassistを、SpringはCGLIBを使用しています(SpringではCGLIBの代わりにDynamicProxyを使う選択肢がありますが、測定結果はCGLIBの方が若干速かったためCGLIBの結果を用いています)。 |
||||||||||||
| 測定プログラム | ||||||||||||
|
今回の測定に使用するプログラムを以下に示します。 コンポーネント
設定ファイル(Seasar2)
実際に測定するプログラムは以下のようになります。またSpringも同様なプログラムです。 プログラム(Seasar2)
コンテナから1度だけ取り出し、カスタマイズされた「GreetingImpl#greet」を複数回実行します。 |
||||||||||||
| 結果 | ||||||||||||
|
結果のグラフを図2に示します。 ![]() 図2:AOPのメソッド実行時間 図2をみるとわかるように3倍ほど差が付きましたが、実行回数が10,000,000回と多く、また実際の時間も小さいので、現実的には無視できる差といえるでしょう。 |
||||||||||||
| 理由 | ||||||||||||
|
Seasar2はバージョン2.1まではCGLIBを使用していましたが、バージョン2.2からJavassistを使用しています。その際に処理速度が3倍速くなったという経緯がありました。 これは単純にJavaassistが速いというわけではなく、Seasar2のバージョン2.2の時点で、Javaassistにチューニングを行ったことによるものです。CGLIBに比べるとJavassistはチューニングしやすく、それが今回の結果につながっていると考えられます。 |
||||||||||||
|
前のページ 1 2 3 4 次のページ |
||||||||||||
|
|
||||||||||||
|
|
||||||||||||
|
||||||||||||
|
|
||||||||||||
|
||||||||||||
|
|
||||||||||||
|
||||||||||||
|
|
||||||||||||
|
||||||||||||
|
|
||||||||||||
|
||||||||||||


