2005年04月26日
郵便番号変換でXMLRPCサーバのベンチ
XML-RPCを使って、郵便番号から住所引っ張ってくるサービスを作る際に、perlとPHPどちらの方がパフォーマンスがでるのか気になったので、ちょっと実験してみました。
perlの方はnaoyaさんのApache::XMLRPC::Lite を使った mod_perl ハンドラによる XML-RPC サーバのエントリを参考にApache::XMLRPC::LiteとClass::DBIを使って実装し、PHPの方はXMLRPCの実装にXML-RPC for PHPにあるライブラリを使い、DBとの連携は組み込みのmysql_connectとかを使って実装してみました。ちなみにPHPはまともに動くコードを初めて書きましたが、意外と書けるものですねw
ベンチマークにはabを使い、同時接続数が1,5,10,20の場合をそれぞれ測定してみました。
ab -n 100 -c 1 -T text/xml -p post.txt -w http://horiuchi.vcube.net/zipconv/xmlrpc > result.html
以下結果です。
レスポンスを強制的にbase64にした場合を測定したのはSOAP::Liteのドキュメントにそうするとパフォーマンスをあがるというようなことが書かれていたので試してみました。
ですが、結果としてはそれほどパフォーマンスはあがってません。逆に同時アクセス数を大きくするとパフォーマンスが落ちてしまいました。
また、PerlとPHPではそれほどパフォーマンスに違いがないようです。
PHPだと劇的に早いという結果になったらPHPにしようかとも思ったのですが、結局どちらにしても違いはそれほどなさそうなので、得意のPerlで行くことにしました。
Continuing the discussion...
このエントリーのトラックバックURL:
http://hori-uchi.com/mt/trackback/324
Comments
結構はやいのかな。。。
こういうテストのエントリー参考になります。
Posted by yoshimax at 2005年04月27日 01:39
サーバの方は運用上問題ない速度がでるように思います。
逆にクライアントの方がXMLをパースする分、遅くなりますね。
パースに、XML::Simpleを使ったら1秒くらいかかって使い物にならない感じでした。
クライアントのサーバのスペックをあげればXML::Simpleでもそんなに遅くはならないと思いますが、大量のアクセスを想定するようなサービスの場合は正規表現とか使ってXMLをパースした方が良さそうです。
Posted by hori-uchi at 2005年04月27日 10:41
