Benchmark_Profilerクラス
Benchmark_Profilerクラスには、フォーマットされた測定結果を返すメソッド一式があります。このクラスで最もよく使われるメソッドのプロトタイプを次に示します。
void enterSection(string $name)― コードセクションを開始します。$nameパラメータは、コードセクションの名前を示します。void leaveSection(string $name)― コードセクションを終了します。$nameパラメータは、コードセクションの名前を示します。void display([string $format = 'auto'])― フォーマットされた実行結果を返します。$formatパラメータは出力するフォーマットを表し、auto(デフォルト)、plain、またはhtmlを指定します。
フィボナッチ数列を反復または再帰で求める処理にBenchmark_Profilerクラスを適用するコードを紹介します。
<?php require_once 'Benchmark/Profiler.php'; //create an instance of Benchmark_Iterate class $profiler = new Benchmark_Profiler(TRUE); function fibonacci(){ global $profiler; $a=0;$b=1; for ($i = 0; $i < 10; $i++) { //Enters code section $profiler->enterSection('fibonacci'.$i); $s=$a+$b; $a=$b; $b=$s; //Leaves code section $profiler->leaveSection('fibonacci'.$i); } //Returns formatted profiling information $profiler->display(); return; } fibonacci(); ?>
<?php require_once 'Benchmark/Profiler.php'; //create an instance of Benchmark_Iterate class $profiler = new Benchmark_Profiler(TRUE); //this function implements the recursive solution //for the fibonacci problem function fibonacci($n){ if(($n>=0)and($n<2)) { return 1; } else { return fibonacci($n-1)+fibonacci($n-2); } } global $profiler; for ($i = 0; $i < 10; $i++) { //Enters code section $profiler->enterSection('fibonacci'.$i); fibonacci($i).'<br />'; //Leaves code section $profiler->leaveSection('fibonacci'.$i); } //Returns formatted profiling information $profiler->display(); return; ?>
それぞれの結果は次のとおりです。
| Total Ex. Time | Calls | Percentage | Callers | |
| fibonacci0 | 0.00025200843811035 | 1 | N/A | Global (1) |
| fibonacci1 | 4.6968460083008E-005 | 1 | N/A | Global (1) |
| fibonacci2 | 3.814697265625E-005 | 1 | N/A | Global (1) |
| fibonacci3 | 5.1021575927734E-005 | 1 | N/A | Global (1) |
| fibonacci4 | 5.2928924560547E-005 | 1 | N/A | Global (1) |
| fibonacci5 | 5.6028366088867E-005 | 1 | N/A | Global (1) |
| fibonacci6 | 3.7908554077148E-005 | 1 | N/A | Global (1) |
| fibonacci7 | 4.0054321289063E-005 | 1 | N/A | Global (1) |
| fibonacci8 | 3.6954879760742E-005 | 1 | N/A | Global (1) |
| fibonacci9 | 0.00029301643371582 | 1 | N/A | Global (1) |
| Total Ex. Time | Calls | Percentage | Callers | |
| fibonacci0 | 0.0001368522644043 | 1 | N/A | Global (1) |
| fibonacci1 | 0.00031614303588867 | 1 | N/A | Global (1) |
| fibonacci2 | 8.4877014160156E-005 | 1 | N/A | Global (1) |
| fibonacci3 | 7.9870223999023E-005 | 1 | N/A | Global (1) |
| fibonacci4 | 0.00011897087097168 | 1 | N/A | Global (1) |
| fibonacci5 | 0.0001227855682373 | 1 | N/A | Global (1) |
| fibonacci6 | 0.00016498565673828 | 1 | N/A | Global (1) |
| fibonacci7 | 0.00038599967956543 | 1 | N/A | Global (1) |
| fibonacci8 | 0.00036907196044922 | 1 | N/A | Global (1) |
| fibonacci9 | 0.00057005882263184 | 1 | N/A | Global (1) |
