使用php-timeit估计php函数的执行时间
废话不多说了,直接把我写的timeit函数分享给大家,具体内容如下:
/** *Computethedelaytoexecuteafunctionanumberoftime *@param$countNumberoftimethatthetestswillexecutethegivenfunction *@param$functionthefunctiontotest.Canbeastringwithparameters(ex:'myfunc(123,0,342)')oracallback *@returnfloatDurationinseconds(asafloat) */ functiontimeit($count,$function){ if($count<=0){ echo"Error:counthavetobemorethanzero"; return-1; } $nbargs=func_num_args(); if($nbargs<2){ echo'Error:NoFunciton!'; echo'Usage:'; echo"\ttimeit(count,'function(param)')"; echo"\te.g:timeit(100,'function(0,2)')"; return-1;//nofunctiontotime } //Generatecallback $func=func_get_arg(1); $func_name=current(explode('(',$func)); if(!function_exists($func_name)){ echo'Error:UnknownFunction'; return-1;//can'ttestunknownfunction } $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);'; returneval($str_cmd); }
测试一下自己写的一个求根算法与系统内置求根函数的执行时间,如下:
//取平方根 functionsqrt_nd($num){ $value=$num; while(abs($value*$value-$num)>0.001){ $value=($value+$num/$value)/2; } return$value; } printtimeit(1000,'sqrt_nd(5)'); print"\n"; printtimeit(1000,'sqrt(5)');
测试结果如下:
0.028280019760132
0.0041000843048096
可见,内置求根函数比自定义的求根函数快了6倍多~~
php中检测函数执行时间的功能使用的方法
PHP中的microtime()函数可以实现
microtime()函数返回当前Unix时间戳和微秒数。
microtime(get_as_float)
参数说明
get_as_float如果给出了get_as_float参数并且其值等价于TRUE,该函数将返回一个浮点数。
本函数仅在支持gettimeofday()系统调用的操作系统下可用。
例如:
<?php $start_time=microtime(true); for($i=1;$i<=1000;$i++){ echo$i.'<br>'; } $end_time=microtime(true);
echo'循环执行时间为:'.($end_time-$start_time).'s';
?>