ひがやすを技術ブログ

電通国際情報サービスのプログラマ

Static Pointcut VS Dynamic Pointcut

Static Pointcut(Proxy作成時にPointcutの判定)と
Dynamic Pointcut(メソッド呼び出しにPointcutの判定)の
パフォーマンスの比較(Date.getTime()を200万回呼び出す)をしたら
Static Pointcut(1873millis)、Dynamic Pointcut(7241millis)となり
Static Pointcutの方が圧倒的にパフォーマンスが良いので、
S2AOPはStatic Pointcutに変更します。
Static Pointcutの実装は、メソッドごとにInterceptorの集合を
持つような感じになるのですが、最初java.lang.reflect.Methodを
キーに使ったところDynamic Pointcutとあまりパフォーマンスは
変わらなかった(以前試した方法)のですが、String(メソッド名)を
キーに変えたところ4倍近くパフォーマンスがあがりました。
SpringのStatic PointcutはMethodをキーに持つ方式にみえますが、
読み違えているかも。