[symfony]簡単に実行時間を測定できるsfTimerManagerクラス
2008年08月14日(木)08:50|谷口
谷口です。
今回はWebDebugの際に有用な情報を出力してくれるsfTimerManagerについて、使い方を紹介します。
sfTimerManagerはWebDebuggerで以下の図のような実行時間に関するサマリーを出してくれるクラスです。 当然ですが、WebDebuggerでの表示はカスタマイズしない限りSF_DEBUGをtrueにしていないと使えないので、 実行時間のサマリーだけログ出力したいときでもSF_DEBUGをtrueにする必要があります。
ただ、SF_DEBUG=falseでも独自のタイマーを追加することはできますので、計測したい時間のみを出力することも可能です。 第 16 章 – アプリケーションの運用ツール 使い方も簡単です。
測定したい処理を開始する前にインスタンスを生成して、完了時に時間を取得するだけです。 例えば、下記のようにすることで、myFunctionの処理時間を計測できます。
$timer = sfTimerManager::getTimer('myTimer');
$result = myFunction(); //測定したい関数
$timer->addTime();
$elapsedTime = $timer->getElapsedTime();
なお、sfTimerManager::getTimerの引数はタイマーの名前となりますので、 別の名前をつければまた0から計測できます。
うまく設定すれば、prod環境でもログに実行時間を表示することが可能ですので、 システム開発時の負荷テストなどに使える機能だと思います。 実際は時間だけが負荷の指標ではありませんが、目安にはなるかと思います。