たけまる / xml
2007-04-01 Sun
_ フィード変換モジュールはどれが速いかベンチ [xml][perl]



前のエントリ [2007-03-31] で,「XML::FeedPP は XML::Feed より速い」ということを書きました.参考までにベンチマークの結果を載せておきま
す.
RDF → Atom
| モジュール | 相対速度 |
| XML::Feed | 1.0 |
| XML::FeedPP | 8.7 |
Atom → RSS
| モジュール | 相対速度 |
| XML::Feed | 1.0 |
| XML::FeedPP | 2.5 |
予想では,Pure Perl で実装されている XML::FeedPP より,部分的に C
言語で実装されている XML::Feed のほうが速いと思っていたのですが,
逆でした (理由はしらない).
単純な XML 処理比較については,以下のエントリが参考になります.
Perl で XML の処理はどれが速いかベンチ : NDO::Weblog
たけまる / Perl - XML の処理はどれが速いかベンチ
最後に,ベンチマークに使ったスクリプトと,ベンチマーク結果を,載せ
ておきます.
《続きを読む》
2007-03-07 Wed
_ Perl - XML の処理はどれが速いかベンチ [perl][xml]



XML を多量に読み書きする予定なので,処理速度を調べてみることにしました.
パース速度については,昔の naoya さんの記事が参考になります.
Perl で XML の処理はどれが速いかベンチ : NDO::Weblog
RSS を対象としたベンチマークでは,正規表現が最速,次いで
XML::LibXML とのことです.
XML::Atom の性能を知りたかったので,同じ試験を Atom でやってみまし
た.XML::Atom は内部で XML::LibXML を使っています.
Benchmark: timing 10000 iterations of XML::Atom, XML::LibXML, XML::Simple, regexp...
XML::Atom: 4 wallclock secs ( 3.58 usr + 0.00 sys = 3.58 CPU) @ 2793.30/s (n=10000)
XML::LibXML: 2 wallclock secs ( 2.22 usr + 0.00 sys = 2.22 CPU) @ 4504.50/s (n=10000)
XML::Simple: 52 wallclock secs (51.03 usr + 0.48 sys = 51.51 CPU) @ 194.14/s (n=10000)
regexp: 0 wallclock secs ( 0.06 usr + 0.00 sys = 0.06 CPU) @ 166666.67/s (n=10000)
(warning: too few iterations for a reliable count)
テストデータには,entry をひとつだけ含むシンプルなものを使いました.
XML::Atom の速度は,XML::LibXML + overhead くらいの結果となりまし
た.保守性を考えると,XML::Atom を拡張して使うのは悪くなさそうです.
さて,出力処理は軽いので気にしなくてよいと思うのですが,念のため確
認してみました.比較対象は XML::Simple, XML::Atom, TT です.
TT: 11 wallclock secs ( 3.77 usr + 0.19 sys = 3.96 CPU) @ 2525.25/s (n=10000)
XML::Atom: 10 wallclock secs ( 9.80 usr + 0.00 sys = 9.80 CPU) @ 1020.41/s (n=10000)
XML::Simple: 6 wallclock secs ( 6.26 usr + 0.00 sys = 6.26 CPU) @ 1597.44/s (n=10000)
パースほど差はつきませんでしたが,TT がやや速い結果となりました.
TT と XML::Simple は名前空間などのオーバヘッドがないと思うので,そ
の分速いのでしょう.実装がラクなことを考えても,TT がベストの選択
肢になりそうです.
XML::Atom は,意外にもパースのが速かったりします.
以下は,ベンチマークスクリプトです.
《続きを読む》
