とりあえずベンチマークで「それなりに早い」というのを確認してみた。
バージョンが上がったら、またベンチを取っていく予定。
以下の各条件で、
ab -c 5 -n 1000
を実行してみた。
ソースは以下の通り。
#!/usr/local/gauche/bin/gosh ;;; coding: euc-jp ;;; -*- scheme -*- ;;; vim:set ft=scheme ts=8 sts=2 sw=2 et: ;;; $Id$ (use wiliki) (use dbm.qdbm) (define *wiliki* (make <wiliki> ... ; 省略 )) (define (main args) (wiliki-main *wiliki*) 0)
結果は以下の通り。
Concurrency Level: 5 Time taken for tests: 348.26070 seconds Complete requests: 1000 Failed requests: 0 Write errors: 0 Total transferred: 2998000 bytes HTML transferred: 2836000 bytes Requests per second: 2.87 [#/sec] (mean) Time per request: 1740.130 [ms] (mean) Time per request: 348.026 [ms] (mean, across all concurrent requests) Transfer rate: 8.41 [Kbytes/sec] received
ソースは以下の通り。
#!/home/nekoie/speedygosh/trunk/c/speedygosh ;;; coding: euc-jp ;;; -*- scheme -*- ;;; vim:set ft=scheme ts=8 sts=2 sw=2 et: ;;; $Id$ (use wiliki) (use dbm.qdbm) (define *wiliki* (make <wiliki> ... ; 省略 )) (define (main args) (wiliki-main *wiliki*) 0)
結果は以下の通り。
Concurrency Level: 5 Time taken for tests: 15.259277 seconds Complete requests: 1000 Failed requests: 0 Write errors: 0 Total transferred: 2998264 bytes HTML transferred: 2836000 bytes Requests per second: 65.53 [#/sec] (mean) Time per request: 76.296 [ms] (mean) Time per request: 15.259 [ms] (mean, across all concurrent requests) Transfer rate: 191.82 [Kbytes/sec] received
ソースは以下の通り。
#!/usr/local/gauche/bin/gosh ;;; coding: euc-jp ;;; -*- scheme -*- ;;; vim:set ft=scheme ts=8 sts=2 sw=2 et: ;;; $Id$ (use www.fastcgi) (use wiliki) (use dbm.qdbm) (define *wiliki* (make <wiliki> ... ; 省略 )) (define (main args) (with-fastcgi (lambda () (wiliki-main *wiliki*))) 0)
結果は以下の通り。
Concurrency Level: 5 Time taken for tests: 12.915099 seconds Complete requests: 1000 Failed requests: 0 Write errors: 0 Total transferred: 2998000 bytes HTML transferred: 2836000 bytes Requests per second: 77.43 [#/sec] (mean) Time per request: 64.575 [ms] (mean) Time per request: 12.915 [ms] (mean, across all concurrent requests) Transfer rate: 226.63 [Kbytes/sec] received
これだけ本番構成なので別扱い。ベンチを取ったマシンは一緒。wilikiのデータも他のものと共通(というか、このwilikiのデータを流用した)。
結果は以下の通り。
Concurrency Level: 5 Time taken for tests: 14.25142 seconds Complete requests: 1000 Failed requests: 0 Write errors: 0 Total transferred: 3021000 bytes HTML transferred: 2740000 bytes Requests per second: 71.30 [#/sec] (mean) Time per request: 70.126 [ms] (mean) Time per request: 14.025 [ms] (mean, across all concurrent requests) Transfer rate: 210.34 [Kbytes/sec] received
ベンチ結果を比べてみると、
となり、まあまあそれなりの速度が出ている事は分かった。 この分なら、もしmod_speedygosh化したなら、FastCGIよりも速度が出るだろう。プロトコルが単純な分は。
……と、これで終わればよかったが、よく見ると、speedygoshのベンチでは、
Total transferred: 2998264 bytes HTML transferred: 2836000 bytes
何やら264バイト、怪しげなデータが出力されている。 何回かベンチを取る毎に、余分なデータのサイズは変わる。 この辺の怪しげな挙動を解明して修正するまでは、本番環境に投入するのはやめておいた方が無難そうだ。
よって、CGI用途には現時点でほぼ問題のない動作レベルだと思われる(但し、まだ検証数が不足している事に注意)。
今後しばらく、自分ところの本番環境に投入し、様子を見てみる事にする。