異なるパーサー 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
いくつか質問があります。
サイズが 100 MB に達する約 200 万の XML を処理したい場合はどうすればよいでしょうか? パフォーマンスを向上させるには、どちらが優れていますか。パフォーマンスは時間に対して測定されます (このプロセス専用のマシンがあるため、マシンの使用率に関係なく、すべての XML の処理をより速く終了するものです)。要するに、メモリ VS CPU 時間 VS 稼働時間の点でどちらが優れているか
CPU パワーをフルに活用してより速く終了することは可能ですか? マルチスレッド?
パフォーマンスを測定したい場合。CPU 時間または稼働時間を使用する必要がありますか。CPU時間はCPUがプロセスを完了するために費やす時間であり、稼働時間はプロセスを完了するためにマシンが時計にかかる合計時間であることを知っていますか?
この測定値が 1 回の実行の結果ではなく平均であるという事実にもかかわらず、パーサー Y がパーサー X と同じ稼働時間で、CPU 時間がはるかに短いのはなぜですか。
パーサー Y の稼働時間を短くして、CPU 時間のパフォーマンスの違いを実生活に反映させることは可能ですか。