2

異なるパーサー Parser X (XOM) と Parser Y (DOM) を使用して、Java で同じ XML 構文解析アルゴリズムを作成しました。200 万回のループ内にコードを埋め込んで実行する必要がある操作の数を模倣し、Java プロファイラーを使用してパフォーマンスを監視しました。測定値を以下に示します。

                        Parser X (XOM)                      Parser Y (DOM)

Heap Memory                6.82                                 7.9
Non-heap memory            14                                   15
Garbage Collector     617 collections \ 2 sec               523 collections \ 1 sec
Up time                  1 m 53 s                              1 m 54 s    
CPU time                 1 m 2 s                               44.8 s

いくつか質問があります。

  1. サイズが 100 MB に達する約 200 万の XML を処理したい場合はどうすればよいでしょうか? パフォーマンスを向上させるには、どちらが優れていますか。パフォーマンスは時間に対して測定されます (このプロセス専用のマシンがあるため、マシンの使用率に関係なく、すべての XML の処理を​​より速く終了するものです)。要するに、メモリ VS CPU 時間 VS 稼働時間の点でどちらが優れているか

  2. CPU パワーをフルに活用してより速く終了することは可能ですか? マルチスレッド?

  3. パフォーマンスを測定したい場合。CPU 時間または稼働時間を使用する必要がありますか。CPU時間はCPUがプロセスを完了するために費やす時間であり、稼働時間はプロセスを完了するためにマシンが時計にかかる合計時間であることを知っていますか?

  4. この測定値が 1 回の実行の結果ではなく平均であるという事実にもかかわらず、パーサー Y がパーサー X と同じ稼働時間で、CPU 時間がはるかに短いのはなぜですか。

  5. パーサー Y の稼働時間を短くして、CPU 時間のパフォーマンスの違いを実生活に反映させることは可能ですか。

4

2 に答える 2

2

XML をすばやく処理したい場合は、スキーマからカスタム XML リーダーを直接生成するツールを使用する必要があります。これらは、DOM の一般的なオーバーヘッドを回避します。また、アプリケーションに特定の XML コンテンツへの直接アクセス API を提供する傾向があります。これには、自然な方法で表現されたデータ (たとえば、実数データのテキスト文字列ではなく浮動小数点数) が含まれます。

ここにいくつかあります:

これらのツールについては、特に経験がありません。(私は内部目的のためにこれらの 1 つを書きました)。

于 2013-06-20T09:28:12.040 に答える
1

さまざまな操作をカバーするために両方のアルゴリズムのコードを拡張した後、XOM パーサーは、同じ CPU 時間とより少ないメモリ フット プリントでアップ タイムがはるかに高速であることが判明しました。XOM パーサーが勝っています。

于 2013-06-20T10:19:49.650 に答える