このエントリーをはてなブックマークに追加

更新日: 2016年2月25日

実行時間: 0.0081

CI_Benchmark

 CI_Benchmarkクラスは、マークした二つの間の処理時間を計測する機能とメモリ使用量の表示機能を提供します。

mark()

    計測したい2つのマークポイントを指定することで、計測開始マークポイントと計測終了ポイント間でかかった 処理時間を計測します。 マークポイントは複数指定することができます。

  • 開始マークポイント
  • $this->benchmark->mark('my_mark_start');

    mark()メソッドの引数に、開始ポイントを識別する任意の文字列を指定します。

  • 終了マークポイント
  • $this->benchmark->mark('my_mark_end');

    mark()メソッドの引数に、終了ポイントを識別する任意の文字列を指定します。

elapsed_time()

    mark()メソッドで指定した、開始マークポイントと終了マークポイント間でかかった処理時間を返します。

    $elapsed_time = $this->benchmark->elapsed_time('my_mark_start', 'my_mark_end');
    echo $elapsed_time;
    // 0.0152

    第一引数に開始マークポイントを指定した文字列、第二引数に終了マークポイントを指定した文字列を指定します。

  • 小数点桁数
  • $elapsed_time = $this->benchmark->elapsed_time('my_mark_start', 'my_mark_end', 5);
    echo $elapsed_time;
    // 0.01521

    第三引数には小数点の桁数を指定することができます。デフォルトは「4」桁です。

  • total_execution_time_start
  • $total_time = $this->benchmark->elapsed_time('total_execution_time_start', '');

    「CodeIgniter.php」は「CI_Benchmark」クラスをロードした直後に開始マークポイント「total_execution_time_start」をセットします。従って、ビューでレスポンス出力時に第一引数を「total_execution_time_start」として「elapsed_time()」メソッドを実行するとWebアプリケーションの総実行時間を取得することができます。

    $this->benchmark->elapsed_time('total_execution_time_start', 'my_mark_end');

    第二引数に任意の終了マークポイントを指定すると、Webアプリケーションの実行開始から任意の終了マークポイントまでの処理時間を計測することができます。

  • controller_execution_time_( クラス名 / アクションメソッド名 )_start
    controller_execution_time_( クラス名 / アクションメソッド名 )_end
  • $this->benchmark->elapsed_time(
        'controller_execution_time_( my_class / my_method )_start',
        'controller_execution_time_( my_class / my_method )_end'
    );

    上記の指定はコントローラクラスのロードからアクションメソッドの実行終了までの処理時間の測定です。 アクションメソッドが終了するまでの指定のため、ビューで利用可能となります。

memory_usage()

    「memory_usage()」メソッドを実行すると、単に「{memory_usage}」という文字列を返します。
    実は、「CI_Output」クラスによってビューをレンダリングする際に「{memory_usage}」という文字列はPHPの「memory_get_usage()」を実行しメモリ使用量に変換されています。
    つまり、「memory_usage()」メソッドはビューの中で実行しなければ意味がありません。また、このメソッドを使わずに、テンプレートに直に「{memory_usage}」という文字列を記述するだけでもよいことになります。

    メモリ使用量: <?php echo $this->benchmark->memory_usage(); ?>
    • CodeIgniterのビューレンダリングを使わずに、Smartyなどのテンプレートエンジンを利用する場合は 「memory_usage()」の機能を利用することができません。