SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
てるてる動画

【php】簡易ストップウォッチ

スタートしてからストップするまでの時間間隔を測ります。

テストや実験、デバッグのときに使うつもりのものなので、安直にvar_dump()してます。
戻り値で返したり、ファイルに書き出すなどすれば、画面には出さずに計測できます。

class stopwatch
{
	var $t;
	var $m;
	function __construct() {$this->t = time();}
	function start() {$this->m = microtime(true) - $this->t;}
	function stop() {var_dump(microtime(true) - $this->t - $this->m);}
}

time() を引き算しているのは、microtime(true)で、タイムスタンプ(大きな整数)+マイクロ秒(小さな小数)の情報落ちが発生するから。

var_dump(microtime(1)); // float(1260411005.05) ← 精度ガタ落ち
var_dump(microtime(1) - time()); // float(0.0497739315033) ← このぐらい細かく知りたい

では、使ってみる。

$sw = new stopwatch;
$sw->start();
ob_start();
for ($i = 0; $i < 1000000; $i++) {
	print 'echoとprintどっちが高速?';
}
ob_end_clean();
$sw->stop(); // float(1.50347900391)

$sw->start();
ob_start();
for ($i = 0; $i < 1000000; $i++) {
	echo 'echoとprintどっちが高速?';
}
ob_end_clean();
$sw->stop(); // float(1.37894105911)

関連するメモ

コメント(1)

【php】echoとprint どっちが高速? at softelメモ 2009年12月11日 01:56

[…] (ある環境で、昨日やってみたとおり。参照 → 【php】簡易ストップウォッチ) […]