speedygosh:ベンチマーク

[トップ][一覧][最近の更新]

とりあえずベンチマークで「それなりに早い」というのを確認してみた。

バージョンが上がったら、またベンチを取っていく予定。



20070228

以下の各条件で、

ab -c 5 -n 1000

を実行してみた。

apache-2.0.59 + 通常CGIで動かしたwiliki

ソースは以下の通り。

#!/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

apache-2.0.59 + speedygosh(20070228版)で動かしたwiliki

ソースは以下の通り。

#!/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

apache-2.0.59 + FastCGIのwiliki

ソースは以下の通り。

#!/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

(参考) squid/2.5.STABLE11 + tcpcgi/0.4.4.2 + wiliki

これだけ本番構成なので別扱い。ベンチを取ったマシンは一緒。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用途には現時点でほぼ問題のない動作レベルだと思われる(但し、まだ検証数が不足している事に注意)。

今後しばらく、自分ところの本番環境に投入し、様子を見てみる事にする。


最終更新 : 2007/03/18 21:04:30 JST