CakePHP2 betaとSymfony2.0をパフォーマンス比較しました

昨日、Symfony2.0がリリースされたので、早速パフォーマンス計測しました。
Symfony2.0もCake2betaと同じデータ量のtableにアクセスして、同じ1レコードを取得して表示する画面を計測しました。


計測は下記のように同じツール、同じオプションを使ってます。
siege -c 10 -b -t 3S

詳細なテスト環境は、下記ブログに書いてあります。データ量なども一緒。
http://cake.eizoku.com/blog/2011/07/27/performance-check-of-cakephp1-3-11-and-cakephp2beta/


計測は何回か実行した中央値ぐらいの結果をピックアップしました。ですので両方ともキャッシュファイルは生成された状態の計測となっています。


[追記]
後藤さんからSymfony2のpullリクエストもらったので、再度計測しました。前田さんからSilexのコードをもらえたので計測追加しました。
計測結果2

Cake2Beta (キャッシュファイルはAPC保存(デフォルト設定))
(http://localhosts/php/cake/blog2/posts/simpleview/10000)
108 trans/sec

Cake2Beta (キャッシュファイルはapp/tmp保存)
98 trans/sec

Cake1.3.11 (http://localhosts/php/cake/blog/posts/simpleview/10000)
80 trans/sec

Symfony2.0 (http://localhost/php/symfony/Symfony/web/app.php/blog/10000)
80 trans/sec

Silex (http://localhost/php/symfony/silex-sample-application/web/index.php/blog/10000)
82 trans/sec

Silex (TwigのCacheをON)
132 trans/sec

Silex (TwigのCacheをON, Twig継承有り)
132 trans/sec

今回はCakePHP1.3.11も計測。後藤さんのパッチを当てたらSymfony2のパフォーマンスが大幅アップしました。
Cake2Betaは標準でtmp以下にファイルキャッシュせず、APCにキャッシュするので、それをはずしてCake1.3と同じようにtmp以下にファイルキャッシュするパターンも計測しました。キャッシュ内容はモデルのスキーマやファイルのパス情報です。

SilexはTwigのキャッシュをONとOFFで計測しました。ONにすると劇的に速度アップしますね
[追記終わり]


CakePHP2betaの方がSymfony2より2倍速い!!!!



今回計測に使ったソースコード
Cake2beta
https://github.com/ichikaway/CakePHP-PerformanceCheckSample/tree/master/cake2/app

Symfony2.0
https://github.com/ichikaway/Symfony2-PerformanceCheckSample

Silex
https://github.com/brtriver/silex-sample-application

Symfony2.0をほとんど使ったことがないので、Blogチュートリアルを見てそのまま作ってます。本番環境モードであるapp.phpを使って計測しています。何か変な設定になっているなどありましたら、教えてください。再計測しますので。


[追記]
Symfony2をXHPrefで見てみました。ファイル探索のコストが高いので、ここらへんが改善ポイントでしょうか。