CakePHPでは動作レベルをConfigure::write(‘debug’, N)で設定できるのですが、この値によってかなりパフォーマンスが変わります(特にフレームワークの起動)。
パフォーマンスを調べる時は実際に運用する環境に合わせた設定をして計測しましょう、という話です。
計測対象
CakePHP1.2のリポジトリ[rev:7706]で、DB接続無しで単にビューを出力するだけのコントローラで計測しました。
実行時間とステップ数は、xdebug.auto_trace=Onで調べています。
[app/config/core.php]
Configure::write('debug', 0); or Configure::write('debug', 2);
[app/controllers/top_controller.php]
<?php class TopController extends AppController { public $uses = array(); public function index() { } } [/php] <p>[app/views/to/index.ctp]</p> TopController
計測結果
※debug=0はキャッシュを効かせるため、1回目のリクエストは無視
debug | 実行時間(s) | ステップ数 |
---|---|---|
2 | 3.0879 | 25301 |
0 | 0.6376 | 2803 |
debug=0はdebug=2に比べて圧倒的に早くなっています(5倍!)。また目安ではありますが、ステップ数が1/10になっています。
これはdebug=0では内部的にキャッシュを利用していることが大きく作用しています。
このキャッシュはdebug=2でも動作しているのですが、キャッシュ期間が短い(10s)ので、あまり恩恵を受けることができません。もちろんdebug=2(debug>0)は開発用なので、キャッシュが効かなくなっているのは正しい動作と言えます。
パフォーマンス計測はdebug=0で
通常、運用に入る場合はdebug=0に設定するので、本稼働システムのパフォーマンスを計測したい場合はdebug=0で計測するべきでしょう。
- Newer: CakePHPカンファレンス東京で司会してきました
- Older: PHP×携帯サイト デベロッパーズバイブル
トラックバック:0
- このエントリーのトラックバックURL
- /blog/2008/10/cakephp_performance_debug_0_2.html/trackback
- Listed below are links to weblogs that reference
- CakePHP debug=0とdebug=2ではパフォーマンスがかなり違う from Shin x blog