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 さんの検証の結果)。劇的です!