[seasar-dev:302] パフォーマンス検証してみました
KOMORI Yusuke
y-komori @ nifty.ne.jp
2006年 3月 8日 (水) 01:41:23 JST
再びこもりです。
せっかく直していただいたので、
超簡単なパフォーマンス検証を行ってみました。
■Diconの構成とテスト内容
app.dicon
+- Func000.dicon
+- ・・・
+- Func099.dicon
Func***.dicon では、すべて allBean.dicon をインクルード
allBean.dicon 中では、さらに250個のdiconをインクルード
この状態で、Func000.dicon で登録した FirstLogic オブジェクト
と、Func099.dicon で登録した LastLogic オブジェクトをそれぞれ1000回
S2Container#getComponent() で取得するテストを行いました。
■改修前
FirstLogic取得x1000回 にかかった時間 15msec
LastLogic取得 x1000回 にかかった時間 10,094msec
線形検索になってしまっているので、やはりコンポーネントの登録位置
でかなり差が出ています。LastLogicは1回あたりに直しても約1秒かかっ
ています。
現場で問題が発生したときも、1つのコンポーネント取得(インジェクショ
ン処理も含む)で2〜3秒かかっていましたので、なんとかくうなずける
値です。
■改修後
FirstLogic取得x1000回 にかかった時間 0msec
LastLogic取得 x1000回 にかかった時間 16msec
劇的に縮まりました。
せっかくなので、Java5で導入された System.nanoTime(); を使って測っ
てみました。(笑)
FirstLogic取得にかかった時間(ns) 1.941029 msec
LastLogic取得にかかった時間(ns) 4.116165 msec
平均値とかとってないのでかなり適当ですが、効果が出たことは確認で
きました。
測り方も適当なのでなんともいえませんが、
System.currentTimeMillis() と nanoTime() って、結構差が出ますね。
リファレンスにも nanoTime はあまり信用できないと書いてありますが。
作ったテストプログラムですが、とりあえず以下の場所に公開しました。
http://www.littleforest.jp/seasar/s2container-test.zip
では。
----------------------------------------------
小森 裕介 / Yusuke Komori
E-Mail:y-komori @ nifty.ne.jp
Blog:http://d.hatena.ne.jp/y-komori/
URL:http://www.littleforest.jp/
Seasar-dev メーリングリストの案内