• Backup list
  • View the source.
  • xtra/php_manual/xmlrpc/xmlrpc_benchmark has been deleted.
    • 1 (2008-05-06 (Tue) 17:24:59)

PHPでXML-RPCライブラリのベンチマーク

PHP で XML-RPC を利用する際には、PEARライブラリの XML-RPCと、PHPのXML-RPC Extension が多く知られています。

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

スペック

  • クライアント(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

テスト概要

  • XML-RPCクライアント xmlrpcclient.example.com から、XML-RPCサーバ xmlrpcserver.example.com へリクエストを送信(POST)。
     Apache Bench を利用して、100人同時に、100リクエストを送信。合計10000万リクエストを送信。
     URLはサンプルです
    #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 へレスポンスを送信。

結果

php_xmlrpc_extensionは、pear_XML-RPCより、およそ4.3倍速いという結果になりました。

Requests per second

ライブラリRequests per second
php_xmlrpc_extension237
pear_XML-RPC54.57
pear_XML-RPC244.74
phpxmlrpc32.76

#ref(): File not found: "Requests_per_second.jpg" at page "xtra/php_manual/xmlrpc/xmlrpc_benchmark"

Time taken for tests

ライブラリTime taken for tests
php_xmlrpc_extension42.194386
pear_XML-RPC183.238006
pear_XML-RPC2223.534755
phpxmlrpc305.213252

#ref(): File not found: "Time_taken_for_tests.jpg" at page "xtra/php_manual/xmlrpc/xmlrpc_benchmark"

ソース

以下のスクリプトの動作は保証しません。

  • php_xmlrpc_extension
    • client

      #ref(): File not found: "php_extension_client.php" at page "xtra/php_manual/xmlrpc/xmlrpc_benchmark"

    • server

      #ref(): File not found: "php_extension_server.php" at page "xtra/php_manual/xmlrpc/xmlrpc_benchmark"

  • pear_XML-RPC
    • client

      #ref(): File not found: "pear_xmlrpc_client.php" at page "xtra/php_manual/xmlrpc/xmlrpc_benchmark"

    • server

      #ref(): File not found: "pear_xmlrpc_server.php" at page "xtra/php_manual/xmlrpc/xmlrpc_benchmark"

  • pear_XML-RPC2
    • client

      #ref(): File not found: "pear_xmlrpc2_client.php" at page "xtra/php_manual/xmlrpc/xmlrpc_benchmark"

    • server

      #ref(): File not found: "pear_xmlrpc2_server.php" at page "xtra/php_manual/xmlrpc/xmlrpc_benchmark"

  • phpxmlrpc
    • client

      #ref(): File not found: "phpxmlrpc_client.php" at page "xtra/php_manual/xmlrpc/xmlrpc_benchmark"

    • server

      #ref(): File not found: "phpxmlrpc_server.php" at page "xtra/php_manual/xmlrpc/xmlrpc_benchmark"


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

© 2006-2008 Internet Revolution