解決済
JavaでXMLファイルを読み込んでDOMするときの高速化
JavaでXMLファイルを読み込んでDOMにします。このときパーズに結構時間がかかる(数 10KBのXMLで3秒程度)ので,この部分を高速化したいと思っています。あらかじめデシリアライズしておいてそれを読み込めばいいと思ったのですが,具体的な方法がわかりません。ご存知のかたは教えてください。また,パーズを高速化するその他の方法でもかまいません。
2006-05-27 17:18の質問
この質問と回答を読んで役に立った場合は「役に立つ質問」に投票してください。投票が多い質問は、役に立つ質問一覧に掲載され、より多くの人に見てもらうことができます。
Ads By Google
回答(1)
1.
2006-05-28 03:54:12

※内容はコメントレベルなのですが、長いので回答に書きます。
ちょっと詳しい状況がわからないので、回答が難しいです。3秒というのがひっかかるのですが、Javaで間違いないでしょうか?(JavaScriptだったら、全然話が違いますので・・・。)
高速化のためには、プログラムの目的・状況を書いて頂くと回答しやすいかもしれません。例えば、サーバプログラムなどは、最初のパースに時間がかかっても、起動してしまえば運用中は関係ない場合もあります。
DOMの選択は変更できないのでしょうか?SAXやXOMなど他の選択肢もあるかと思いますし、これらの方が一般には速いかもしれません。
パーサーを自分の手で高速化するのはかなり難しいですが、別のパーサーを使うことはできます。Xerces↓
http://xerces.apache.org/
が有名です。iPEXという性能のいいものもあるようですが、価格的に個人使用は無理です。
シリアル化のために、インターフェイスjava.io.Serializableがありますが、たぶんご使用されているクラスにはimplementされていて、書き出すとXMLファイルが出てくるだけです。おそらく、メモリ上のデータをそのままダンプして、次回それを読めばいいというご発想だと思うのですが、Javaだとメモリ上でどういう構造になっているかはJavaVMの実装上の問題なので、"Run Anywhere"の精神からすると、避けた方がよいかと思います。
ちょっと詳しい状況がわからないので、回答が難しいです。3秒というのがひっかかるのですが、Javaで間違いないでしょうか?(JavaScriptだったら、全然話が違いますので・・・。)
高速化のためには、プログラムの目的・状況を書いて頂くと回答しやすいかもしれません。例えば、サーバプログラムなどは、最初のパースに時間がかかっても、起動してしまえば運用中は関係ない場合もあります。
DOMの選択は変更できないのでしょうか?SAXやXOMなど他の選択肢もあるかと思いますし、これらの方が一般には速いかもしれません。
パーサーを自分の手で高速化するのはかなり難しいですが、別のパーサーを使うことはできます。Xerces↓
http://xerces.apache.org/
が有名です。iPEXという性能のいいものもあるようですが、価格的に個人使用は無理です。
シリアル化のために、インターフェイスjava.io.Serializableがありますが、たぶんご使用されているクラスにはimplementされていて、書き出すとXMLファイルが出てくるだけです。おそらく、メモリ上のデータをそのままダンプして、次回それを読めばいいというご発想だと思うのですが、Javaだとメモリ上でどういう構造になっているかはJavaVMの実装上の問題なので、"Run Anywhere"の精神からすると、避けた方がよいかと思います。
回答レベル : アドバイス
Ads By Google
コメント
まだコメントがありません
