Re:595
うーん,うーん,ごめんなさい.「コンパイル」が何を意味しているか分かりません.m(__)m
バイトコードを生成したりそのクラスをロードしたりすること?
だとしたら「全部纏めて測定」してませんけど...
そういえば,どこからどこまでを測定したか書いてなかったですね.
こんな感じです (S2Unit を使っています).
public void testCall() throws Exception { Hoge hoge = (Hoge) getComponent(Hoge.class); long t1 = System.currentTimeMillis(); for (int i = 0; i < TIMES; ++i) { hoge.foo(); } long t2 = System.currentTimeMillis(); for (int i = 0; i < TIMES; ++i) { hoge.bar(); } long t3 = System.currentTimeMillis(); System.out.println(Long.toString(t2 - t1) + "\t" + Long.toString(t3 - t2)); }
そんなわけで (どんなわけで?),アスペクトを適用したクラスの生成 (コンテナの初期化時に行われる) はもちろん,インスタンス化も終わっているので,単純にメソッド呼び出しを繰り返した時間だけを測定しています.のつもりです.
03:00 追記
あ,分かったかも.HotSpot によるコンパイルのことかな? そうか,最初 (592) からそういう話題だったか.orz
そんなわけで (どんなわけで?),上記の測定コードでコンポーネントを取ってきてから t1 の時刻を取得する前に 1000 回ほどループ回して foo()
と bar()
を温めてやりましたが...
誤差以上の差は見られず.(^^;