ベンチマーク結果の出力
この反復と再帰によるフィボナッチ数列プログラムは、どちらもフォーマットされたテーブルと連想配列という2つの形式で結果を出力します。
テーブル形式の結果には、各マーカーの名前と、そのマーカーに到達するまでの経過時間(Time Index)、前のマーカーからそのマーカーに達するまでに要した時間(Ex Time)、さらには総時間に対するEx Timeの割合(%)が表示されます。
反復の場合の結果は次のとおりです。
| Time Index | Ex Time | Percentage | |
| Start | 1209633208.32539500 | - | 0.00% |
| fibonacci0 | 1209633208.32546500 | 0.000070 | 22.88% |
| fibonacci1 | 1209633208.32549400 | 0.000029 | 9.48% |
| fibonacci2 | 1209633208.32551600 | 0.000022 | 7.19% |
| fibonacci3 | 1209633208.32553900 | 0.000023 | 7.52% |
| fibonacci4 | 1209633208.32556200 | 0.000023 | 7.52% |
| fibonacci5 | 1209633208.32558600 | 0.000024 | 7.84% |
| fibonacci6 | 1209633208.32560800 | 0.000022 | 7.19% |
| fibonacci7 | 1209633208.32563100 | 0.000023 | 7.52% |
| fibonacci8 | 1209633208.32565600 | 0.000025 | 8.17% |
| fibonacci9 | 1209633208.32567800 | 0.000022 | 7.19% |
| Stop | 1209633208.32570100 | 0.000023 | 7.52% |
| Total | - | 0.000306 | 100.00% |
連想配列には、同じ情報が配列形式で格納されています。
Array
(
[name] => fibonacci0
[time] => 1209633208.32546500
[diff] => 0.000070
[total] => 0.000070
)
Array
(
[name] => fibonacci1
[time] => 1209633208.32549400
[diff] => 0.000029
[total] => 0.000099
)
Array
(
[name] => fibonacci2
[time] => 1209633208.32551600
[diff] => 0.000022
[total] => 0.000121
)
再帰の場合の結果は次のとおりです。
| Time Index | Ex Time | Percentage | |
| Start | 1209633188.10306000 | - | 0.00% |
| fibonacci0 | 1209633188.10322500 | 0.000165 | 7.83% |
| fibonacci1 | 1209633188.10330500 | 0.000080 | 3.80% |
| fibonacci2 | 1209633188.10335800 | 0.000053 | 2.52% |
| fibonacci3 | 1209633188.10343000 | 0.000072 | 3.42% |
| fibonacci4 | 1209633188.10350000 | 0.000070 | 3.32% |
| fibonacci5 | 1209633188.10359200 | 0.000092 | 4.37% |
| fibonacci6 | 1209633188.10371600 | 0.000124 | 5.89% |
| fibonacci7 | 1209633188.10388300 | 0.000167 | 7.93% |
| fibonacci8 | 1209633188.10415100 | 0.000268 | 12.72% |
| fibonacci9 | 1209633188.10455300 | 0.000402 | 19.08% |
| Stop | 1209633188.10516700 | 0.000614 | 29.14% |
| Total | - | 0.002107 | 100.00% |
同様に、連想配列には同じ情報が配列形式で格納されています。
Array
(
[name] => fibonacci0
[time] => 1209633188.10322500
[diff] => 0.000165
[total] => 0.000165
)
Array
(
[name] => fibonacci1
[time] => 1209633188.10330500
[diff] => 0.000080
[total] => 0.000245
)
Array
(
[name] => fibonacci2
[time] => 1209633188.10335800
[diff] => 0.000053
[total] => 0.000298
)
ご覧のとおり、Benchmark_Timerクラスを使うと、マーカーを使って厳密な結果を得ることができます。しかし、ほとんどの場合は、個々のコード行よりも、まとまった関数のベンチマークを測定したいと思うのではないでしょうか。特に、関数自体のコードを修正せずにベンチマークを測定できれば便利です。そのためにはBenchmark_Iterateクラスを使用します。
