开发者

PHP - using microtime() to measure CPU usage of a function/code block

开发者 https://www.devze.com 2023-02-06 18:48 出处:网络
I tried using it like this: $now = microtime(true); // cpu expensive code here echo microtime(true) - $now;

I tried using it like this:

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

开发者_JS百科but regardless of what code I enter between these statements, I alwasy get almost the same results, something like 3.0994415283203E-6

What am I doing wrong?


Better solution. Run the code multiple times to average out the operation:

$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";


3.0994415283203E-6 equates to 0.0000030994415283203.

The E-6 tells you to move the decimal point left six places. E+6 would mean the opposite. As @deceze mentioned, this is called scientific notation.

If you're doing a performance test, it's a good idea to put the code into a 100000 or so iteration loop, and then divide the resulting time by 100000. That way you get a more accurate average.


You're not doing anything wrong, it's just that the code you're timing really only takes a fraction of a second to run.

If you want to prove it, sleep for a few seconds.


It looks like you are using microtime() without the optional argument, but you say you are, so I am not 100% sure.

What is the output of this:

$now = microtime(true);
sleep(1);
echo microtime(true) - $now;


PHP always amazes me with how fast it is. Your code seems to be right. Maybe your code is really only taking 3 milliseconds.

You could try making a long loop, something like this:

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

Add this code inside of your timer. For me, looping 1 million times usually takes about 1/2 second. See if this changes your time.

0

精彩评论

暂无评论...
验证码 换一张
取 消