Symfoware

Symfowareについての考察blog

CodeIgniter 3 ベンチマーククラスの使用方法(Library Reference - Benchmarking Class)

CodeIgniter User Guide

Library ReferenceのBenchmarking Classについて調べてみます。
Benchmarking Class


Benchmarking Class



ベンチマーク用のクラスは常にロードされているので、手動でロードする必要はありません。
プログラム上の2つのポイントをマークし、2点間の処理時間を計測することができます。



Using the Benchmark Class



ベンチマーククラスは、コントローラー、ビュー、モジュールで使用することができます。

使い方は、

1.開始地点をマーク
2.終了地点をマーク
3.「elapsed time」を実行して、結果を表示。


具体的なサンプルは以下のようになります。


  1. <?php
  2. class Sample extends CI_Controller {
  3.     
  4.     public function index() {
  5.         
  6.         // 開始地点をマーク
  7.         $this->benchmark->mark('code_start');
  8.         // 本当は重い処理
  9.         sleep(1);
  10.         
  11.         // 終了地点をマーク
  12.         $this->benchmark->mark('code_end');
  13.         
  14.         // 計測結果を表示
  15.         echo $this->benchmark->elapsed_time('code_start', 'code_end');
  16.         
  17.     }
  18.     
  19. }




処理に1秒かかりました。

542_01.png


マークするポイントはこのように複数箇所指定可能です。


  1. <?php
  2. class Sample extends CI_Controller {
  3.     
  4.     public function index() {
  5.         
  6.         // 最初の地点をマーク
  7.         $this->benchmark->mark('dog');
  8.         // 本当は重い処理
  9.         sleep(2);
  10.         
  11.         // 二番目の地点をマーク
  12.         $this->benchmark->mark('cat');
  13.         
  14.         // 本当は重い処理
  15.         sleep(1);
  16.         
  17.         // 終了地点をマーク
  18.         $this->benchmark->mark('bird');
  19.         
  20.         // 計測結果を表示
  21.         echo $this->benchmark->elapsed_time('dog', 'cat');
  22.         echo '<br>';
  23.         echo $this->benchmark->elapsed_time('cat', 'bird');
  24.         echo '<br>';
  25.         echo $this->benchmark->elapsed_time('dog', 'bird');
  26.         
  27.     }
  28.     
  29. }



542_02.png





Profiling Your Benchmark Points



ここでプロファイル結果を画面に表示する方法を調べました。
アプリケーションのプロファイル、ベンチマーク(General Topics - Profiling Your Application)

enable_profilerを指定すれば画面にプロファイル結果を表示してくれます。


  1. $this->output->enable_profiler(TRUE);




この機能と組み合わせれば、簡単に区間の処理速度を計測することができます。

計測開始地点の名前を「_start」、終了を「_end」とすることで、
プロファイル結果に自動的に処理時間が表示されます。


  1. <?php
  2. class Sample extends CI_Controller {
  3.     
  4.     public function index() {
  5.         
  6.         // 最初の地点をマーク
  7.         $this->benchmark->mark('my_mark_start');
  8.         // 本当は重い処理
  9.         sleep(2);
  10.         
  11.         // my_markを終了
  12.         $this->benchmark->mark('my_mark_end');
  13.         
  14.         
  15.         // 次の地点をマーク
  16.         $this->benchmark->mark('another_mark_start');
  17.         
  18.         // 本当は重い処理
  19.         sleep(1);
  20.         
  21.         // another_markを終了
  22.         $this->benchmark->mark('another_mark_end');
  23.         
  24.         // 計測結果を表示
  25.         $this->output->enable_profiler(TRUE);
  26.         $this->load->view('sample');
  27.         
  28.     }
  29.     
  30. }



ベンチマークの項目に「My Mark」と「Another Mark」が追加されました。

542_03.png





Displaying Total Execution Time



ビューの任意の一にトータル処理時間を表示したい場合は、以下のように記載します。


  1. <html>
  2. <head>
  3.     <title>プロファイルテスト</title>
  4. </head>
  5. <body>
  6. プロファイルのテストです。<br>
  7. 処理時間:<?php echo $this->benchmark->elapsed_time(); ?>
  8. </body>
  9. </html>



542_04.png


省略記法を用いて、以下のような指定でもOKです。


  1. <html>
  2. <head>
  3.     <title>プロファイルテスト</title>
  4. </head>
  5. <body>
  6. プロファイルのテストです。<br>
  7. 処理時間:{elapsed_time}
  8. </body>
  9. </html>







Displaying Memory Consumption



メモリの使用量を表示するには、以下のように記載します。


  1. <html>
  2. <head>
  3.     <title>プロファイルテスト</title>
  4. </head>
  5. <body>
  6. プロファイルのテストです。<br>
  7. メモリ使用量:<?php echo $this->benchmark->memory_usage();?>
  8. </body>
  9. </html>



542_05.png


省略記法を用いて、以下のように記載することもできます。


  1. <html>
  2. <head>
  3.     <title>プロファイルテスト</title>
  4. </head>
  5. <body>
  6. プロファイルのテストです。<br>
  7. メモリ使用量:{memory_usage}
  8. </body>
  9. </html>







CodeIgniter 3のユーザーガイド(User Guide)まとめ
関連記事

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2015/01/29(木) 22:22:34|
  2. PHP
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<Debian 7にapt-getでmemcachedをインストールし、php5から接続する | ホーム | CodeIgniter 3 ビューで使用できるPHPの代替タグ(General Topics - Alternate PHP Syntax for View Files)>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/1619-8a284211
この記事にトラックバックする(FC2ブログユーザー)