/** * 繰り返し指定されている時の測定結果はある程度平均値が出ているか * @test * @group hoge */ public function 繰り返し指定されている時の測定結果はある程度平均値が出ているか() { $ret = SMB\Benchmark::getInstance()->setScale(3)->measure(function () { usleep(2000); // 0.002秒 }, array(), 'bench1', 100); // 何回繰り返しても小数点3位までは一緒 $this->assertSame('0.002', $ret->result('bench1')); }
// echoResult(),echoResultAll() での出力フォーマットはデフォルトで // <pre>benchmark => {$mark} : {$benchmark}秒</pre> // ですが、\SMB\Benchmark\Formatter::forEcho()を修正するか、 // \SMB\Benchmark\IFormatterを実装したクラスを作成しセットすることで // 好きなフォーマットに変更可能です。 // こんなフォーマッターを作成したら //<?php // //class SampleFormatter implements SMB\Benchmark\IFormatter //{ // public function forEcho($mark, $benchmark) // { // return '<pre>'.$mark.'の計測時間は'.$benchmark.'秒でした</pre>'.PHP_EOL; // } //} // この様に使えます require_once 'SampleFormatter.php'; // サンプル用 $formatter = new SampleFormatter(); SMB\Benchmark::getInstance()->setFormatter($formatter)->measure(function () { }, array(), 'other3')->echoResult('other3'); // => other3の計測時間は0.XXXXXX秒でした // このライブラリの対象はPHP5.4以上ですが、PHP5.3でも動かしたい場合は // SMB\Benchmark\PHP53\Benchmark を利用してください。 // 違いは // ・Benchmark::measure() 第1引数のタイプヒンティング(callable)を削除 // ・無名関数内で$thisを使うために // Benchmark::resultAll(), Benchmark::echoResultAll() で$thisを退避 // Benchmark::existsMark(), Benchmark::calc(), Benchmark::getFormatter() のアクセス修飾子をpublicに // です。(本当は配列もせっかくだから[]で扱いたかった。。) // 尚、当ライブラリで出した計測結果はあくまでも目安として使ってください。