ブログ

たけまる / 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 は,意外にもパースのが速かったりします.

以下は,ベンチマークスクリプトです.

続きを読む