関連オブジェクト | Top | fluxiomきたー

 

DjangoとRhacoのベンチをWorkStyleで実施

いろいろなたくらみの為に、DjangoRhacoでパフォーマンスのチェック。

細かな実装は違うけど、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
Rhacooff1000105.69
Djangooff10001020.17
Rhacoon1000109.84
Rhacoon+ionCube10001012.36
Rhacoon+EAccelerator10001017.22
Djangoon100010248.45
Java-10001015.72
Rhacooff100001005.75
Djangooff1000010018.98
Rhacoon100001009.25
Djangoon10000100271.11
Java-1000010014.37
#Rhacoのキャッシュはテンプレートのphpスクリプトへのコンパイル結果をキャッシュ。最速にするために更新チェック無し
#Djangoのキャッシュはレスポンス自体をメモリ上にキャッシュ。最速のmemcachedは面倒なのでlocmem使用
RhacoのベンチにionCube使用版を追加。
ionCubeは無料でダウンロード可能。php.iniでモジュールのパスを指定するだけで数割速くなる(配布時にコンパイル済みなのでglibc2のlinuxか限られたOS+php4限定)。かなり素敵。他の言語のようにバイトコードをメモリ上にキャッシュするので高速化される模様。

Taged with:,,,,

urihttp://www.everes.net/2006/apr/14/django-rhaco-benchmark/

Entry Date:2006-04-14 11:24

Author:makoto

ping url:http://www.everes.net/2006/apr/14/django-rhaco-benchmark/tbping/

subscribe:feed with LDR

Comments

1 by lifree

01:51 on

2006-04-15

request/secって1秒間に発行されたリクエスト回数だよね?
随分おそいなぁrhaco。
キャッシュしたら2倍にはなるんだ。それでもJavaにすら負けるのかぁ・・・・。
memcashいれて、Zend Optimizerでもいれてメモリキャッシュ使いまくらないと駄目かなぁ・・
DBを使わない部分だけでの比較もしてみてほしいね。

2 by makoto

08:59 on

2006-04-15

req・・は1秒間に処理した回数だね。
ionCubeはphpの良さをあまり殺さず、しかも簡単にインストール&高速化できるのでマジでphp使う場合には必須だね。
一つのファイルでリクエストを受け付けるのがばからしいphpとしては、memcached使う場合は事前に設計して作り出さないとまずいね。
DBを使わない部分の比較はあまり意味がない(フレームワークのボトルネック切り分けには有効だろうけど)。
Javaが30倍速いってのは、きっと単純なループをさせた場合だろうから、気にしなくてイイと思う。
DBコネクション周りはJavaとかPythonは、DBだけ再起動されるとアプリがこけることがあるから、こけないphpのコネクション取得動作が多少遅くても思想の問題だからけちをつける所でもないしなぁ。
Rhacoで動作時にXMLを見てる所とかないよね?
フレームワークの内部ではセッタ・ゲッタ使わないとかもありかもしれない。

3 by lifree

10:38 on

2006-04-15

XMLって設定のXMLって事かな?
それなら使ってないけど、テンプレート作成時にはXML解析してるけど、まぁ一回だけか。
セッタ・ゲッタを使わないってのは理想なんだけど、PHP4の場合にメソッドにしてないと変数の存在が見えなかったりするから、どうしたもんかと。(初期化してないとクラス変数が見えない)
PHP5専用にしてしまえば、きっと少し早くなるとは思うけど、それじゃ思想とずれちゃうしね。

4 by makoto

10:57 on

2006-04-15

テンプレート作成時とかの初回コンパイル時間は何の問題にもならないから、あとのネックはphpの言語的な物かな?
EAcceleratorを使えば現実的な数字なんじゃないかな。
動作させたままWebインターフェースでキャッシュクリアとか出来るっぽいし、かなり速い。
(DjangoでPSYCOを使った場合の数字とかにも興味があるけど、wsgiモードで起動する元気がない。。phpのionCube並には効きそうな気がするんだけどね。)

Trackbacks

1 by LiFREE

02:06 on

2006-04-15

http://www.thinkit.co.jp/free/compare/2/2/1.html

によると(無料会員制のサイトだけど)PHPはZend OptimizerをいれてもJAVAの30倍遅いらしい・・・。
DBだけにしても2倍、コネクション取得だけでいくと5倍遅いという結果になっている。

遅いのは分かってたけど、数字にされちゃうと悔しいなー。

Add Comment

コメント追加








What's Next
Tags
Blog Archive
Project
  • » pymagnolia

    ma.gnolia.comのAPIを操作するPythonライブラリ。

  • » django-ja

    Djangoと日本の仲間たち。
    Djangoに関するニュースや、「仲間たち」のブログエントリをアグリゲートしています。

  • » rhaco

    PHPのWebフレームワーク。 PHPらしさを失わず直感的に記述できることを目指している。 Djangoと同じく、他のライブラリに依存しない。また、Djangoっぽいテンプレートの作り方も可能。

  • » Tracka

    スモールチーム、家族用の知共有ウェブアプリケーション。
    テキスト、画像、youtube動画、stage6動画等をトラック!

  • » BMO

    BMOは、本、CD、DVD、ゲームに印刷されているバーコードをiSightで読み取り、AmazonのAPIを利用して画像や情報をmacに保存します。iSightのついているmacで利用してください。Leopardと呼ばれているOSX 10.5以上が必要です。 保存した情報は、OSX Leopard(10.5)から搭載されたCover FlowとQuick Lookという仕組みを利用して表示します。