XMLパーサの性能比較(JavaとPythonで)

[グラフで見るウィキペディア]では最初Python付属のSAXパーサを使って解析してて、文書全体*1を一回舐めるのに20分そこらかかっててました。その間退屈しのぎにJavaでほぼ同様のプログラム*2を書いて動かしたら2分で終了。この現実を見せられると厳しい。

Python付属のXMLパーサは中でexpatを使ってるみたいだけど、libxml2のほうを使うともっとマシになるかな?とおもったら、XMLパーサのベンチマークスイートでの結果(だいぶ古いけど)を見るとそうでもなさそう。やっぱりPython自体のパフォーマンスのせいか、ぼくのコードがへっぽこなのか*3はまだわかんない。

Perlで似たようなことをやったときの評価を読んだりしてもう少し掘り下げたい。

ついでに手動トラックバックの練習。はてなのひとのブログってことでゆるしてください。

ちゃんとトラックバックできた!

*1:無圧縮で4.2G。元はgzipで圧縮されたファイルをgzip -dcでstdoutに出してパイプでパーサに掛けている

*2:SAXのイベントハンドラを15分ぐらいでまんま移植しただけ

*3:表面上はJavaと同じことやってるんだけど、インタプリタ内部でペナルティが大きいコードになってる可能性はある。自分の書いたコードがどのように機械に落ちるのかはいつも気になる。