2

現在、ネイティブJava XML処理ライブラリ(Xerces)を使用しています。xmlノードにランダムアクセスする必要があるため、saxパーサーを使用できません。XMLファイルを解析しているときにCPU使用率が100%になることがわかりました。私がこのように処理している小さなサイズ(1-10kb)がたくさんあります-

while(hasFile){
processXMlfile(hasFile.next);
}

processXMlfile()で、ファイルの解析と処理を行っています。

JDOMライブラリに移動した場合、パフォーマンス上のメリットはありますか?

4

2 に答える 2

5

JDOM 2.0.0は、多くのパフォーマンスの問題に対処します。それらの1つは、XMLファイルの「タイトループ」処理に直接関連しています。

見て:

http://hunterhacker.github.com/jdom/jdom2/apidocs/org/jdom2/input/sax/package-summary.html

次のようなことをする必要があります。

SAXBuilder saxbuilder = new SAXBuilder();
saxbuilder.setVariousConfigurations()
SAXEngine saxengine = saxbuilder.buildEnine();

while(hasfile) {
  processXML(saxengine, nextfile);
}

JDOM 2.0.0でSAXEngineの概念を使用すると、SAX解析インフラストラクチャのセットアップが完全に不要になります。そのセットアップ時間は、全体的な処理の膨大な増加を説明します。

まだ100%で実行している場合でも、スループットは2倍以上になる可能性があります。

于 2012-04-12T09:49:11.963 に答える
3

ボトルネックはおそらくXML解析であり、JDOMは内部で同じXMLパーサーを使用する可能性が高いため、違いはありません。

多数の小さなファイルを解析する場合の重要な要素は、パーサーの初期化コストを回避することです。すべてのファイルに同じXMLパーサーインスタンスを再利用します。

于 2012-04-12T08:39:23.587 に答える