1

私はこのようにそれを使用してみました:

$now = microtime(true); 
// cpu expensive code here
echo microtime(true) - $now;   

しかし、これらのステートメントの間に入力するコードに関係なく、常にほぼ同じ結果が得られます。3.0994415283203E-6

私は何を間違っていますか?

4

5 に答える 5

7

より良い解決策。コードを複数回実行して、操作を平均化します。

$runs = 500;

$start = microtime(true);
for ($i = 0; $i < $runs; $i++) {
    //cpu expensive code here
}
$end = microtime(true);
$elapsed = number_format($end - $start, 4);
$one = number_format(($end - $start) / 500, 7);
echo "500 runs in $elapsed seconds, average of $one seconds per call";
于 2011-01-25T01:34:30.093 に答える
3

3.0994415283203E-6に等しい0.0000030994415283203

E-6、小数点を 6 桁左に移動するように指示します。 E+6逆の意味になります。@deceze が述べたように、これは科学表記法と呼ばれます。

パフォーマンス テストを行っている場合は、コードを 100000 回程度の反復ループに入れて、結果の時間を 100000 で割ることをお勧めします。そうすることで、より正確な平均値を得ることができます。

于 2011-01-25T01:31:44.343 に答える
1

あなたは何も悪いことをしていません。それは、タイミングを計っているコードの実行にほんの一瞬しかかからないということです。

証明したいならsleep、数秒間。

于 2011-01-25T01:33:57.557 に答える
1

オプションの引数なしで使用しているように見えますmicrotime()が、あなたはそう言っているので、100%確信はありません。

これの出力は何ですか:

$now = microtime(true);
sleep(1);
echo microtime(true) - $now;
于 2011-01-25T01:35:23.790 に答える
0

PHP の速さにはいつも驚かされます。あなたのコードは正しいようです。おそらく、あなたのコードは実際には 3 ミリ秒しかかかっていません。

次のような長いループを作成してみてください。

$x=0;
while ($x<1000000)
  {
  $x++;
  }

このコードをタイマーの中に追加します。私の場合、100 万回ループするには通常約 1/2 秒かかります。これがあなたの時間を変えるかどうか見てください。

于 2011-01-25T01:35:27.997 に答える