Show Table of Contents
第10章 パフォーマンスの調整
すべてのソフトウェアで言えることですが、 適切に設定を行わないと Smooks のパフォーマンスは劣化します。
10.1. 全般
- Smooks オブジェクトをキャッシュし再使用する
- Smooks の初期化には時間がかかるため、 再使用することが重要となります。
- 可能な場合はリーダーインスタンスをプールする
- リーダーによってはリーダーの作成が高負荷となるため、 これによりパフォーマンスが大幅に向上されます。
- 可能な場合は SAX フィルタリングを使用する
- SAX 処理は DOM 処理よりもはるかに高速で、 メモリフットプリントも一貫して小さくなります。 大型のメッセージを処理するために必須となります 。Smooks のカートリッジがすべて SAX 対応であることを確認してください (詳細は 「フィルタリング処理の選択」 を参照してください)。
- デバッグのロギングを無効にする
- Smooks はコードの一部で集中的にデバッグのロギングを行います。 これにより、 処理のオーバーヘッドが大幅に増加し、 スループットが低下します。 また、 ロギングを全く設定しないと、 デバッグログステートメントが実行されることがあるので注意してください。
- 開発環境では
HTMLReportGeneratorのみを使用する HTMLReportGeneratorを有効にすると、 大型のメッセージによってパフォーマンスのオーバーヘッドが大幅に増加します。OutOfMemory例外が発生することもあります。- コンテキストセレクタ
- コンテキストセレクタはパフォーマンスに悪影響を与えます。 例えば、
"a/b/c/d/e"の ようなセレクタの一致を判断する場合、"d/e"のようなセレクタよりも多くの処理が必要となります 。場合によってはデータモデルに詳細なセレクタが必要となることがありますが、 必要ない場合はパフォーマンスに対してセレクタを最適化するようにしてください。
10.2. Smooks カートリッジ
パフォーマンスの最適化に関しては、 各カートリッジのドキュメントを参照するようにしてください。
10.3. Java Bean カートリッジ
可能な場合は仮想 Bean モデルを使用しないようにし、 マップの代わりに Bean を作成するようにします。 データを作成し、 マップに追加することは、 Plain Old Java Object (POJO) を作成し「セッター」メソッドを呼び出すよりも低速になります。

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.