S2アンチパターン その1

最近、なぜWebアプリのプロファイリングなんかを行っていたかというと・・・、去年担当した、S2を使ったプロジェクトでパフォーマンス問題が発生していたので、そのトラブルシューティングをしてました。

そこで発見した問題を、S2アンチパターンとして紹介します。

  • dicon ファイルを細かく分割する
    • dicon ファイルを細かく分割し過ぎると、パフォーマンス劣化を起こす場合があります。これは、dicon に定義されたコンポーネントを検索する際に、線型検索になる場合があるためです。
    • S2DaoMaker Ver0.5.0 では、ひとつのDAOにつき、ひとつの dicon ファイルが生成されるため、上記のような問題が発生する可能性があります。
  • 回避策
    • レイヤー毎など、ある程度まとまった単位で dicon ファイルを作成する。
    • dicon ファイルで名前空間を指定すると共に、component 定義で name 属性を指定する。


※詳しくは、以下のスレを参照
http://ml.seasar.org/archives/seasar-dev/2006-March/000290.html


さて、その2はあるのか!?

追記 2006/03/09

id:higayasuo さんが、早速、パフォーマンス改善をして下さいました。改修前の数百分の一の時間で処理できるようになりました(id:y-komori さんの検証の結果)。劇的です!