Home  >  Article  >  Backend Development  >  Use php-timeit to estimate the execution time of php functions, php-timeitphp_PHP tutorial

Use php-timeit to estimate the execution time of php functions, php-timeitphp_PHP tutorial

WBOY
WBOYOriginal
2016-07-13 16:53:59793browse

Use php-timeit to estimate the execution time of the php function. php-timeitphp

Without further ado, I will share with you the timeit function I wrote. The specific content is as follows:

/**
 * Compute the delay to execute a function a number of time
 * @param $count Number of time that the tests will execute the given function
 * @param $function  the function to test. Can be a string with parameters (ex: 'myfunc(123, 0, 342)') or a callback
 * @return float   Duration in seconds (as a float)
 */
function timeit($count, $function) {
 if ($count <= 0){
  echo "Error: count have to be more than zero";
  return -1;
 }
 $nbargs = func_num_args();
 if ($nbargs < 2) {
  echo 'Error: No Funciton!';
  echo 'Usage:';
  echo "\ttimeit(count, 'function(param)')";
  echo "\te.g:timeit(100, 'function(0,2)')";
  return -1;      // no function to time
 }
 // Generate callback
 $func = func_get_arg(1);
 $func_name = current(explode('(', $func));
 if (!function_exists($func_name)) {
  echo 'Error: Unknown Function';
  return -1;     // can't test unknown function
 }
 $str_cmd = '';
 $str_cmd .= '$start = microtime(true);';
 $str_cmd .= 'for($i=0; $i<'.$count.'; $i++) '.$func.';';
 $str_cmd .= '$end = microtime(true);';
 $str_cmd .= 'return ($end - $start);';
 return eval($str_cmd);
}

Test the execution time of a root-finding algorithm you wrote and the system’s built-in root-finding function, as follows:

//取平方根
function sqrt_nd($num){
 $value = $num;
 while(abs($value*$value -$num) > 0.001){
  $value = ($value + $num/$value)/2;
 }
 return $value;
}
print timeit(1000, 'sqrt_nd(5)');
print "\n";
print timeit(1000, 'sqrt(5)');

 The test results are as follows:

0.028280019760132
0.0041000843048096

It can be seen that the built-in root function is more than 6 times faster than the custom root function~~

The method used to detect function execution time in php

The microtime() function in PHP can achieve this

The microtime() function returns the current Unix timestamp and microseconds.

microtime(get_as_float)

Parameter description
get_as_float If the get_as_float parameter is given and its value is equivalent to TRUE, this function returns a floating point number.

This function is only available under operating systems that support the gettimeofday() system call.

For example:

<&#63;php
$start_time = microtime(true);
for($i=1;$i<=1000;$i++){
echo $i.'<br>';
}
$end_time = microtime(true);

echo 'The loop execution time is: '.($end_time-$start_time).' s';
?>

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/1052066.htmlTechArticleUse php-timeit to estimate the execution time of php functions, php-timeitphp No more nonsense, just write me down The timeit function is shared with everyone. The specific content is as follows: /** * Compute the delay to...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn