High resolution timingは、高性能な時計を提供します。
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を利用して時間を取得しているとのことです。
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
1 | <?php |
2 | $c = new HRTime\StopWatch; |
3 | $c ->start(); |
4 | $c ->stop(); |
5 | |
6 | var_dump( $c ->getLastElapsedTime(HRTime\Unit::NANOSECOND)); |
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(0, 0)でも同じような値になるので、関数呼び出しのオーバーヘッドが10000ナノ秒くらいあるようです。
time_nanosleep(0, 100)までは10000程度のまま値が変わらないのですがtime_nanosleep(0, 1000)あたりで急に500000くらいに値が増えてしまいます。
なぜだ。
実はWindowsのタイマはナノ秒の精度を持っていないので、そもそもtime_nanosleep(0, 1)のような設定をしても意味がないのであった。
いったい何に使えばいいんだHRTime。