忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。



2024/11/23 16:48 |
PECL High resolution timing 高性能な時計
High resolution timingは、高性能な時計を提供します。
<?php
	$c = new HRTime\StopWatch;
	$c->start();
	$c->stop();
	
	var_dump($c->getLastElapsedTime(HRTime\Unit::NANOSECOND));
start()からstop()の間に何もしていませんが、手元のXAMPPではだいたい1000程度のfloat値が帰ってきます。
start()とstop()の間に1000ナノ秒程度の時間がかかっているようです。

http://www.php.net/manual/ja/intro.hrtime.php
> It uses the best possible APIs on different platforms which brings resolution up to nanoseconds.

最も性能の良いAPIを利用して時間を取得しているとのことです。
<?php
	$c = new HRTime\StopWatch;
	$c->start();
	time_nanosleep(0, 1);
	$c->stop();

	var_dump($c->getLastElapsedTime(HRTime\Unit::NANOSECOND));
time_nanosleep()で1ナノ秒スリープしているので、理論上は1ナノ秒だけプラスされるはずなのですが、実際は10000いくらかの値が返ってきます。
time_nanosleep(0, 0)でも同じような値になるので、関数呼び出しのオーバーヘッドが10000ナノ秒くらいあるようです。
time_nanosleep(0, 100)までは10000程度のまま値が変わらないのですがtime_nanosleep(0, 1000)あたりで急に500000くらいに値が増えてしまいます。
なぜだ。

実はWindowsのタイマはナノ秒の精度を持っていないので、そもそもtime_nanosleep(0, 1)のような設定をしても意味がないのであった。
いったい何に使えばいいんだHRTime。
PR


2014/09/05 22:46 | Comments(0) | PHP

コメント

コメントを投稿する






Vodafone絵文字 i-mode絵文字 Ezweb絵文字 (絵文字)



<<買ったものリスト 2014/09/07 | HOME | テキストを音声にする>>
忍者ブログ[PR]