Top > bench > php > xmlrpc

* PHPでXML-RPCライブラリのベンチマーク [#mf63674c]
* PHPのXML-RPCライブラリのベンチマーク [#mf63674c]
PHP で XML-RPC を利用する際には、PEARライブラリの XML-RPCと、PHPのXML-RPC Extension が多く知られています。&br;

では、どのライブラリがどれだけ速いのか? 素朴な疑問ありましたので、実行速度を計測してみました。&br;

- 対象:
-- PHP extension XML-RPC
--- http://jp.php.net/manual/ja/book.xmlrpc.php
-- PEAR XML-RPC
--- http://pear.php.net/package/XML_RPC
-- PEAR XML-RPC2
--- http://pear.php.net/package/XML_RPC2
-- phpxmlrpc(EXTRA)&color(Red){※PHP extension XML-RPCのphp実装};&br;
--- http://phpxmlrpc.sourceforge.net/
--- http://sourceforge.net/project/showfiles.php?group_id=34455&package_id=188337


* スペック [#rf8c7706]
- クライアント(xmlrpcclient.example.com)
-- ハード
--- Kernel : Linux 2.6.9
--- CPU    : Intel(R) Core(TM) Duo CPU T2500  @ 2.00GHz
--- MEMORY : 1G

-- ソフト
--- PHP 5.2.5
--- PEAR XML-RPC 1.5.1
--- PEAR XML-RPC2 1.0.2
--- Apache 2.2.8

- サーバー(xmlrpcserver.example.com) 
-- ハード
--- xmlrpcserver.example.com
--- OS     : Windows XP Professional SP2
--- CPU    : Intel(R) Celeron(TM) M  1.40GHz
--- MEMORY : 1G

-- ソフト
--- PHP 5.2.5
--- PEAR XML-RPC 1.5.1
--- PEAR XML-RPC2 1.0.2
--- Apache 2.2.6

* テスト概要 [#t1381256]
- XML-RPCクライアント xmlrpcclient.example.com から、XML-RPCサーバ xmlrpcserver.example.com へリクエストを送信(POST)。&br;
 Apache Bench を利用して、100人同時に、100リクエストを送信。合計10000万リクエストを送信。&br;
 &color(Red){URLはサンプルです};&br;
 #ab -n 10000 -c 100 http://xmlrpcserver.example.com/xmlrpc_bench/php_extension_server.php

- XML-RPCサーバ xmlrpcserver.example.com でリクエストを受信し、XML-RPCリクエストをデコードし、XML-RPCクライアント xmlrpcclient.example.com へレスポンスを送信。

* 結果 [#u6405fd1]
php_xmlrpc_extensionは、pear_XML-RPCより、およそ4.3倍速いという結果になりました。
** Requests per second [#q790228c]
|ライブラリ|Requests per second|h
|php_xmlrpc_extension|237|
|pear_XML-RPC|54.57|
|pear_XML-RPC2|44.74|
|phpxmlrpc|32.76|
#ref(Requests_per_second.jpg,center)
** Time taken for tests [#nd04560f]
|ライブラリ|Time taken for tests|h
|php_xmlrpc_extension|42.194386|
|pear_XML-RPC|183.238006|
|pear_XML-RPC2|223.534755|
|phpxmlrpc|305.213252|
#ref(Time_taken_for_tests.jpg,center)

* ソース [#j6c34914]
&color(Red){以下のスクリプトの動作は保証しません。};
-- php_xmlrpc_extension
--- client
#ref(php_extension_client.php)
--- server
#ref(php_extension_server.php)
-- pear_XML-RPC
--- client
#ref(pear_xmlrpc_client.php)
--- server
#ref(pear_xmlrpc_server.php)
-- pear_XML-RPC2
--- client
#ref(pear_xmlrpc2_client.php)
--- server
#ref(pear_xmlrpc2_server.php)
-- phpxmlrpc
--- client
#ref(phpxmlrpc_client.php)
--- server
#ref(phpxmlrpc_server.php)

    Front page List of pages Search Recent changes Backup Referer   Help   RSS of recent changes

© 2006-2008 Internet Revolution