PHP code example of shimabox / smbbenchmark
1. Go to this page and download the library: Download shimabox/smbbenchmark library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
shimabox / smbbenchmark example snippets
// vendor/autoload.php を読み込みます
// インスタンス生成
$bm = SMB\Benchmark::getInstance();
// スタート
$bm->start('bench1'); // 引数にマーキング用の値を渡す
// 計測処理
for ($i = 0; $i < 100; $i++) {
new stdClass();
}
// 終了
$bm->end('bench1');
// 出力
// 小数点6桁(マイクロ秒単位)まで出力(デフォルト)
$bm->echoResult('bench1'); // => benchmark => bench1 : 0.・・・・・・秒
// インスタンス生成
$bm = SMB\Benchmark::getInstance();
// 計測したい処理をmeasure()に書く
// measure()はcallableを引数に取ります
$d = 4; // ローカル変数
$bm->measure(
// 第1引数に無名関数も渡せてその中に処理も書ける
function($a, $b, $c) use ($d) {
echo $a . $b . $c . $d . PHP_EOL;
},
array(1, 2, 3), // 関数に対して引数を配列で渡せる
'bench2' // start(),end()を使わなくてもマークできる
);
$bm->echoResult('bench2');
// 関数の引数なしでマークありの場合は空の配列を第2引数に渡す
$bm->measure(
function() {
for ($i = 0; $i < 10000; $i++) {
new stdClass();
}
},
array(),
'bench3'
);
// オブジェクトの関数も渡せる
$bm = SMB\Benchmark::getInstance()
->start('bench7')
->measure(function() {
usleep(1000000); // 1秒
})
->end('bench7')
->measure(function() {
usleep(500000); // 0.5秒
}, array(), 'bench8')
;
$bm->echoResult('bench7');
$bm->echoResult('bench8');
// 入れ子も可能
$bm = SMB\Benchmark::getInstance()
->start('bench9')
->start('bench10')
->measure(function() {
usleep(100000); // 0.1秒
})
->end('bench10')
->measure(function() {
usleep(50000); // 0.05秒
}, array(), 'bench11')
->end('bench9')
;
$bm->echoResult('bench9'); // => benchmark => bench9 : 0.15・・・・秒
$bm->echoResult('bench10'); // => benchmark => bench10 : 0.1・・・・・秒
$bm->echoResult('bench11'); // => benchmark => bench10 : 0.05・・・・秒
$bm->echoResultAll(); // => bench1〜bench11までの計測結果が出力される
// マーキングのクリア
$bm->clearMark('bench11'); // bench11をクリア
$bm->echoResult('bench11'); // => 出力なし
$bm->echoResultAll(); // => bench1〜bench10までの計測結果が出力される
// すべてのマーキングをクリア
$bm->clearMarkAll();
$bm->echoResultAll(); // => 出力なし
// インスタンスのクリア
SMB\Benchmark::clear();
// 単独の出力
$bm = SMB\Benchmark::getInstance()
->measure(function() {
usleep(50000); // 0.05秒
}, array(), 'bench12')
->measure(function() {
usleep(5000); // 0.005秒
}, array(), 'bench13')
;
echo $bm->result('bench12') . PHP_EOL; // => 0.05・・・・
echo $bm->result('bench13') . PHP_EOL; // => 0.005・・・
// 計測結果すべての出力
$bm->clearMarkAll();
$bm = SMB\Benchmark::getInstance()
->start('bench14')
->start('bench15')
->measure(function() {
usleep(100000); // 0.1秒
})
->end('bench15')
->measure(function() {
usleep(50000); // 0.05秒
}, array(), 'bench16')
->end('bench14')
;
var_dump($bm->resultAll()); // => array('bench14'=>'0.15・・・・', 'bench15'=>'0.1・・・・・', 'bench16'=>'0.05・・・・')
$bm->clearMarkAll();
var_dump($bm->resultAll()); // => array()
// SMB\Benchmark::getInstance()->measure();
// 第4引数に繰り返し行う回数を指定します。
$bm = SMB\Benchmark::getInstance()
->measure(
function() {
usleep(2000); // 0.002秒
},
array(),
'bench17',
100 // 100回繰り返す
)
;
// 結果は100回行なった結果の平均値
echo $bm->echoResult('bench17') . PHP_EOL; // benchmark => bench17 : 0.002・・・秒
// インスタンス生成
$bm = SMB\Benchmark::getInstance();
// 小数点4桁に変更
$bm->setScale(4);
$bm->start('other1');
for ($i = 0; $i < 1; $i++) {}
$bm->end('other1');
// 出力
// 小数点4桁まで出力
$bm->echoResult('other1'); // => benchmark => other1 : 0.XXXX秒 (処理が早過ぎると、ほぼ0.0000秒になる)
// もちろんチェーン可能
SMB\Benchmark::getInstance()
->setScale(4)
->measure(function() {}, array(), 'other2')
->echoResult('other2')
;
// 1より小さい値をセットされたらデフォルトの6桁でセットし直します。
$bm->setScale(0); // => scaleは6になる
class SampleFormatter implements SMB\Benchmark\IFormatter
{
public function forEcho($mark, $benchmark)
{
return '<pre>'.$mark.'の計測時間は'.$benchmark.'秒でした</pre>'.PHP_EOL;
}
}
$formatter = new SampleFormatter();
SMB\Benchmark::getInstance()
->setFormatter($formatter)
->measure(function() {}, array(), 'bench19')
->echoResult('other3')
; // => other3の計測時間は0.XXXXXX秒でした
# enablerepoは適宜修正
$ sudo yum install php-bcmath --enablerepo=remi,remi-php56
$ yum list installed php-bcmath
インストール済みパッケージ
php-bcmath.x86_64 5.6.29-1.el6.remi @remi-php56