Hitachi

Cosminexus V11 アプリケーションサーバ Cosminexus XML Processor ユーザーズガイド


3.4.1 高速パース機能の概要

高速パース機能とは,事前解析によって解析対象のXML文書の特徴を学習し,以降のXML文書解析時に学習結果を利用することで,解析処理の実行速度を向上させる機能です。この機能は,要素や属性の並び順や入れ子関係などの構造的な特徴が一致しているXML文書を,繰り返し解析するシステムに適しています。高速パース機能を利用したシステムを次の図に示します。

図3‒4 高速パース機能を利用したシステム

[図データ]

事前解析によって学習したXML文書の特徴は,解析結果オブジェクトに記録します。解析結果オブジェクトを生成して,高速パースを実現する流れを次の図に示します。

図3‒5 解析結果オブジェクトを生成して,高速パースを実現する流れ

[図データ]

  1. 解析結果オブジェクトの生成

    解析結果オブジェクトは,XML Processorが,事前解析用XML文書から要素の並び順,属性の並び順,要素の繰り返しなどの情報を事前解析して生成します。事前解析用XML文書とは,解析対象のXML文書と構造的な特徴が同じXML文書です。

    事前解析用XML文書は,ユーザが作成する必要があります。XML文書は一般的に自由な構造を持つため,すべてのXML文書に対応できる解析結果オブジェクトは生成できません。このため,解析対象のXML文書を考慮して,出現頻度の高い文書構造に的を絞って事前解析用XML文書を作成します。

  2. 解析結果オブジェクトの利用(高速パースの実現)

    解析結果オブジェクトを設定したXML ProcessorのXMLパーサ機能で解析を実行すると,解析結果オブジェクトを利用してXML文書を解析します。解析対象のXML文書の構造が,解析結果オブジェクトが記録している文書の構造と一致していれば,解析速度が向上します。

図3-5に示した流れで高速パース機能を使用する場合,ユーザプログラム中に,解析結果オブジェクトを生成してXMLパーサに設定するためのコードを記述する必要があります。ユーザプログラム中にコードを記述して高速パース機能を使用する方法の詳細については,「3.4.2 高速パースのための作業の流れ」を参照してください。

ただし,すべての場合について,通常よりも解析速度を向上できることを保証するものではありません。このため,高速パース機能を使用する場合は,実際に解析対象のXML文書を使用して性能を評価することを推奨します。

なお,高速パース機能を使用する場合は,「6.19 高速パース機能に関する注意事項」の内容も確認してください。

参考

高速パース機能を使用することで短縮できる解析時間の割合について

高速パース機能は,SAXパーサでの解析時間を短縮します。また,DOMパーサでの解析は,SAXパーサでの解析とDOMツリーの生成で実装されているため,DOMパーサでの解析時間も短縮できます。ただし,高速パース機能を使用してもDOMツリーの生成時間は変わりません。このため,次の図に示すように,SAXパーサでの解析と比べて,解析時間全体に対して短縮される時間の割合は小さくなります。

[図データ]

また,妥当性検証を行う場合は,解析時間に占める妥当性検証処理の割合が大きいため,短縮される解析時間の割合は相対的に小さくなります。特に,javax.xml.validation.Schemaクラスを使わないで妥当性検証を行う場合は,解析時間はほとんど短縮されません。

小さいサイズのXML文書を解析する場合も,解析時間に占めるXMLパーサの初期化時間の割合が大きいため,短縮される解析時間の割合は相対的に小さくなります。