忍者ブログ
[PR]
×

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


share

2025/04/01 18:13 |
PECL High resolution timing 高性能な時計
High resolution timingは、高性能な時計を提供します。
1<?php
2    $c = new HRTime\StopWatch;
3    $c->start();
4    $c->stop();
5     
6    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を利用して時間を取得しているとのことです。
1<?php
2    $c = new HRTime\StopWatch;
3    $c->start();
4    time_nanosleep(0, 1);
5    $c->stop();
6 
7    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

share

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

コメント

コメントを投稿する






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



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