私は長い間DOMを使用してきましたが、そのためDOMの解析パフォーマンスはかなり良好でした。約4〜7 MBのXMLを処理する場合でも、解析は高速です。DOMで直面する問題は、大規模なXMLの処理を開始するとすぐに巨大になるメモリフットプリントです。
最近、私は第2世代のパーサーであると思われるStax(XML用のストリーミングパーサー)に移行しようとしました(Staxについて読むと、現在最速のパーサーであると言われています)。大きなXMLに対してStaxパーサーを約4MBのメモリフットプリントで試したところ、メモリフットプリントは確実に大幅に減少しましたが、XML全体を解析してそこからJavaオブジェクトを作成するのにかかる時間はDOMのほぼ5倍になりました。
Staxのsjsxp.jar実装を使用しました。
パーサーのストリーミングの性質のためにパフォーマンスが極端に良くない可能性があることをある程度論理的に推測できますが、5時間の短縮です(たとえば、DOMはこのXMLのオブジェクトを構築するのに約8秒かかりますが、Staxの解析は平均で約40秒かかりました)は絶対に受け入れられないでしょう。
私はこれらのパフォーマンスの数値を理解することができないので、ここで完全にいくつかのポイントを逃していますか?