※ 商品のリンクをクリックして何かを購入すると私に少額の報酬が入ることがあります【広告表示】 いろいろなたくらみの為に、 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限定)。かなり素敵。他の言語のようにバイトコードをメモリ上にキャッシュするので高速化される模様。