[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 メーリングリストの案内