2012-04-12 7 views
2

現在、ネイティブJava XML処理ライブラリ(Xerces)を使用しています。 xmlノードへのランダムアクセスが必要なので、サックスパーサーは使用できません。私は、XMLファイルを解析しているときにCPU使用率が100%になることを見出しています。私は()processXMlfileでthis-jdomパフォーマンス

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

のように処理しています、私は構文解析と処理ファイルを構築しています小さいサイズ(1〜10キロバイト)の大多数あります。

JDOMライブラリに移動すると、パフォーマンス上の利点はありますか?

+0

あなたはVTD-XMLを見ているだろう可能性が倍以上に....あなたのスループットを見つけるのだろうか?強力なXML処理のために、それは誰にも目立つものではありません...既存のjava xml処理フレームワークの包括的な研究を行っているこの最新の研究論文を読むhttp://sdiwc.us/digitlib/journal_paper.php?paper=00000582.pdf –

答えて

3

おそらくボトルネックはXML解析であり、JDOMはおそらく同じXMLパーサーをカバーの下に使用するため、違いはありません。

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

+0

ありがとうMichael 。 CPU使用率は100%のままですが、スループットは大幅に向上します(約40-50ファイルから約200ファイルへ) – user837208

+0

cpu 100%の使用は確かに良いことです。 –

+0

私は時々システム管理者がそれを良いものと見なさないことはありません。そのためには、赤いフラグの状況 – user837208

5

JDOM 2.0.0は、いくつかのパフォーマンス上の問題を解決します。それらの1つは、XMLファイルの「タイトループ」処理に直接関係しています。完全にSAX構文解析のセットアップを排除するJDOM 2.0.0でSAXEngineの概念を使用して

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

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

:あなたが何かを行う必要があります

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

はを見てくださいインフラ。セットアップ時間は、全体的な処理の膨大なプロポーションを占めます。

あなたはまだ100%で実行されてもよいが、湯が

関連する問題