11

私はこのコードを持っています:

$time_sample[] = microtime(true); //start
sleep(1);
$time_sample[] = microtime(true); //time 1
sleep(2);
$time_sample[] = microtime(true); //time 2
sleep(3);
$time_sample[] = microtime(true); //time 3
sleep(4);
$time_sample[] = microtime(true); //time 4

スクリプトの出力:

Time 1: 1.001217 seconds.
Time 2: 2.002094 seconds.
Time 3: 3.003023 seconds.
Time 4: 4.004211 seconds.

これに基づいて、なぜ1.000000秒sleep(1)sleep(2)2.00000秒などではないのですか?

で同じテストを行ったところusleep()、同じタイプの結果が得られました。

理由を教えていただけますか?

4

2 に答える 2

18

それでも、関数呼び出しや変数の割り当てなどに余分なオーバーヘッドがかかります。少なくともスリープ時間の長さ、おそらく数ミリ秒以上になります。

于 2011-12-04T23:48:44.503 に答える
5

これは間違っているかもしれませんが、昔、誰かがコンピューターの時間を測定するのは非常に難しいと言っていたのを覚えています。

関数の呼び出しsleep()microtime()すべてに時間がかかることを考えると、それは常にアウトになります。タイミングプロセスの一部ではないことを行うには、オーバーヘッドがあります。

于 2011-12-04T23:50:24.507 に答える