アノテーション取得のパフォーマンス

最近、なにかとアノテーションをお世話になることが多いのですが、いつも気になるのはアノテーション取得時のパフォーマンス。アノテーションを多用しているS2JFaceにとって、昔のリフレクションのように、アノテーション取得のパフォーマンスが悪いのは致命的なのです。

というわけで、簡単なサンプルを作ってみました。フィールドにつけられたアノテーションを、getAnnotation() メソッドで100万回取得するサンプルです。

結果は我が家のマシン10回平均で 267msec/100万回。1回あたり、0.267マイクロ秒。ほとんど気にならないレベルです。

ついでに、一度 HashMap に格納してから100万回取り出すサンプル(アノテーションをキャッシュするサンプル)を作って同じように計測してみました。

こちらは、10回平均で 131msec/100万回。1回あたり、0.131マイクロ秒。まぁ、直接取得よりも2倍くらい違いますが、オーダーが小さすぎるので、当面は気にしなくて良さそうです。