ふぁぼったーで使ってるPHPのプロファイリング用の関数
PHPでパフォーマンスチューニングをする時、特定のロジックの実行にどれくらい時間がかかっているのか知りたいことがよくある。よくあるというか、チューニングにプロファイリングは必須だ。世の中には高度なプロファイリングツールがあれこれあるみたいだけど、高機能すぎて僕にはよく分かんないです。
という訳で多分みなさんそれぞれ自前でパフォーマンスを計測してると思うんだけど、自分が普段ふぁぼったーのWeb開発で使っている、PHPの任意の部分の処理時間を計測するスニペットを公開してみます。やっつけですが。
使い方
getMS()関数は、前回getMS()が呼ばれた時刻からの経過時刻をミリ秒で返します。
すなわち、処理時間を計測したい部分の開始地点と終了地点でそれぞれgetMS()を呼び、終了地点での戻り値をprintするなりすれば任意の部分の処理時間を計測できます。
<?php function getMS(){ static $oldTime=0; list( $micro, $time ) = explode(' ',microtime()); $newTime=$time+=$micro; $diffTime=$newTime-$oldTime; $oldTime=$newTime; return $diffTime; } getMS(); //計測開始 // // 処理step 1 // print ("step 1. ".getMS()."s<br>"); //step 1処理時間出力 // // 処理step 2 // print ("step 2. ".getMS()."s<br>"); //step 2処理時間出力 ?>
あわせて読みたい
http://labs.unoh.net/2006/10/php_print_debug.htmlにインスパイヤされて作った、デバッグモードでのみ表示されるprintみたいな関数も使ってます。みたまんま。DEBUG定数の状態で出力を制御します。
<?php define('DEBUG',true); function preprint($var){ if(defined('DEBUG') && DEBUG){ print $var; } } ?>
さらに横着版
<?php function preprint($var){ if(true){ print $var; } } ?>