0

Xpathを使用してXMLファイルを赤くしています。ファイルのサイズは不明であり(700Kb〜2Mb)、1秒あたり約100ファイルを読み取る必要があります。だから私はXpathからロードして読み取る方法を速くしたい。

java nioファイルチャネルとメモリマップトファイルを使用しようとしましたが、Xpathで使用するのは困難でした。それで、誰かがそれをする方法を言うことができますか?

4

3 に答える 3

1

XPath 式が何をしているかに大きく依存します。ここには、ファイルを読み取るための基本的な I/O、XML 解析、ツリー構築、および XPath 評価の 4 つのコストがあります。(さらに、出力を生成する5番目の可能性がありますが、出力が何であるかについては言及していません。)あなたの説明から、どの要因が支配的であるかを知る方法はありません。パフォーマンス向上の最初のステップは常に測定です。私の最初のステップは、これら 4 つの要因の寄与を測定することです。

複数のプロセッサを備えた環境にいる場合 (そうでない人はいますか?)、並列実行は理にかなっています。これは、Saxon-EE で collection() 関数を使用して処理を整理できる場合は、「無料」で取得できます。

于 2012-08-22T07:13:25.870 に答える
0

もし私があなただったら、おそらくこの場合は Java をやめてしまうでしょう。Java でそれができないからではなく、(Unix を使用している場合は) bash スクリプトを使用した方が高速になるからです。少なくともこれは多くのファイルを扱った私の経験が教えてくれます。

*nix では、まさにそのためのxpathというユーティリティがあります。

多くの I/O 操作を行っているため、まともな SSD ディスクを使用すると、別のスレッドで実行するよりもはるかに役立ちます。複数のスレッドで行う必要がありますが、CPU ごとに 1 つ以上にする必要はありません。

于 2012-08-22T05:43:15.050 に答える
-1

パフォーマンスが必要な場合は、単純に XPath を完全に削除し、SAX パーサーを使用してファイルを読み取ります。Stackoverflow で SAX vs XPath vs DOM の種類の質問を検索して、詳細を取得できます。XPathはDOM や SAX に比べてはるかに効率的ですか?

于 2012-08-22T06:25:20.153 に答える