※ この記事にはアフィリエイト広告が含まれることがあります。
いろいろなたくらみの為に、 Django と Rhaco でパフォーマンスのチェック。
細かな実装は違うけど、WorkStyleはDjango版とRhaco版の両方があるので、ベンチにはちょうどいい。
実施はWorkStyleのタスク詳細表示ページを使用した(Django/Rhaco版共に3回のSQLを投げているはず)。
せっかくなのでJava版(velocity+struts+torque+derby)もやってみた。Java版は完全に違う実装になってしまっているし、DBもPostgreSQLじゃなくってderbyなので参考値。残るはRails版なんだけど?
結果は、下記の通り。むぅ
Rhaco作者からの要望により、ionCubeを入れて試してみた。確かに簡単に数割早くなる。
さらに、turck-mmcacheの後継である EAccelerator も試してみた。メモリのみ使用+スクリプト更新チェックしないの最速設定。Javaは抜いたね。
フレームワーク | キャッシュ | リクエスト回数 | 同時アクセス | request/sec |
|---|---|---|---|---|
Rhaco | off | 1000 | 10 | 5.69 |
Django | off | 1000 | 10 | 20.17 |
Rhaco | on | 1000 | 10 | 9.84 |
Rhaco | on+ionCube | 1000 | 10 | 12.36 |
Rhaco | on+EAccelerator | 1000 | 10 | 17.22 |
Django | on | 1000 | 10 | 248.45 |
Java | 1000 | 10 | 15.72 | |
Rhaco | off | 10000 | 100 | 5.75 |
Django | off | 10000 | 100 | 18.98 |
Rhaco | on | 10000 | 100 | 9.25 |
Django | on | 10000 | 100 | 271.11 |
Java | 10000 | 100 | 14.37 |
Rhacoのキャッシュはテンプレートのphpスクリプトへのコンパイル結果をキャッシュ。最速にするために更新チェック無し
Djangoのキャッシュはレスポンス自体をメモリ上にキャッシュ。最速のmemcachedは面倒なのでlocmem使用
RhacoのベンチにionCube使用版を追加。
ionCube は無料でダウンロード可能。php.iniでモジュールのパスを指定するだけで数割速くなる(配布時にコンパイル済みなのでglibc2のli nuxか限られたOS+php4限定)。かなり素敵。他の言語のようにバイトコードをメモリ上にキャッシュするので高速化される模様。