どっちが速いのでしょう〜
http://tree-shop.info/
tree-shopでは、xmlのパーサにjdomを使っています。
便利ではありますが、domという事で当然ランダムアクセスしている訳で、遅いです。
そこで、domとsaxのいいとこ取りをしたstaxを使ってパーサの入れ替えを検討中です。
staxのパース処理が何となく書けたので、処理速度を比較してみることにしました。
使用API
レスポンス形式
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]