文系プログラマによるTIPSブログ

文系プログラマ脳の私が開発現場で学んだ事やプログラミングのTIPSをまとめています。

jdomとstaxのxmlパーサ速度比較

どっちが速いのでしょう〜


f:id:treeapps:20180426142529p:plain

http://tree-shop.info/
tree-shopでは、xmlのパーサにjdomを使っています。
便利ではありますが、domという事で当然ランダムアクセスしている訳で、遅いです。

そこで、domとsaxのいいとこ取りをしたstaxを使ってパーサの入れ替えを検討中です。
staxのパース処理が何となく書けたので、処理速度を比較してみることにしました。

レスポンス形式

xml

検索条件

キーワード:コカ・コーラ
結果取得数:30件

検証環境

mac pro 2008 4core xeon2.8G × 2、メモリ8G

結果

回数 jdom stax
1回目 84ms 28ms
2回目 85ms 28ms
3回目 85ms 27ms
4回目 85ms 28ms
5回目 84ms 28ms
6回目 85ms 28ms
7回目 84ms 28ms
8回目 84ms 28ms
9回目 85ms 28ms
10回目 85ms 28ms

両者とも比較と言える程共通の実装ではないし、レスポンスの量も少ないですが、3倍くらいstaxの方が速いですね。純粋なsaxだともう少し速いのかな。
この程度の速度差では、レスポンスxmlが返るまでの時間の誤差で吸収されてしまいますが、良い感じです。

速度差よりも気になったのが、jdomよりstaxの方が綺麗で短いコードになったという事です。
jdomの場合はいちいち特定のElementを取得して要素値を取得していましたが、staxの場合は要素開始イベントの場合に要素値を取得する、といった簡単なコードになりました。

staxのサンプルコード等は、次回にでも載せてみたいと思います。

サンプル書いてみました!
Javaのstaxでxmlをパースする - 文系プログラマによるTIPSブログ
[rakuten:jism:10672071:detail]