使用php-timeit估計(jì)php函數(shù)的執(zhí)行時(shí)間
廢話不多說了,直接把我寫的timeit函數(shù)分享給大家,具體內(nèi)容如下:
/**
* 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);
}
測(cè)試一下自己寫的一個(gè)求根算法與系統(tǒng)內(nèi)置求根函數(shù)的執(zhí)行時(shí)間,如下:
//取平方根
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)');
測(cè)試結(jié)果如下:
0.028280019760132
0.0041000843048096
可見,內(nèi)置求根函數(shù)比自定義的求根函數(shù)快了6倍多~~
php中檢測(cè)函數(shù)執(zhí)行時(shí)間的功能使用的方法
PHP 中的 microtime() 函數(shù)可以實(shí)現(xiàn)
microtime() 函數(shù)返回當(dāng)前 Unix 時(shí)間戳和微秒數(shù)。
microtime(get_as_float)
參數(shù)說明
get_as_float 如果給出了 get_as_float 參數(shù)并且其值等價(jià)于 TRUE,該函數(shù)將返回一個(gè)浮點(diǎn)數(shù)。
本函數(shù)僅在支持 gettimeofday() 系統(tǒng)調(diào)用的操作系統(tǒng)下可用。
例如:
<?php
$start_time = microtime(true);
for($i=1;$i<=1000;$i++){
echo $i.'<br>';
}
$end_time = microtime(true);
echo '循環(huán)執(zhí)行時(shí)間為:'.($end_time-$start_time).' s';
?>
相關(guān)文章
laravel實(shí)現(xiàn)Auth認(rèn)證,登錄、注冊(cè)后的頁(yè)面回跳方法
今天小編就為大家分享一篇laravel實(shí)現(xiàn)Auth認(rèn)證,登錄、注冊(cè)后的頁(yè)面回跳方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-09-09
Laravel實(shí)現(xiàn)ApiToken認(rèn)證請(qǐng)求
今天小編就為大家分享一篇Laravel實(shí)現(xiàn)ApiToken認(rèn)證請(qǐng)求,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-10-10
laravel 如何實(shí)現(xiàn)引入自己的函數(shù)或類庫(kù)
laravel 如何實(shí)現(xiàn)引入自己的函數(shù)或類庫(kù)?今天小編就為大家解答一下在laravel中引入自己的函數(shù)或類庫(kù)的方法,分享給大家,給大家做個(gè)參考,一起過來看看吧2019-10-10
PHP網(wǎng)頁(yè)游戲?qū)W習(xí)之Xnova(ogame)源碼解讀(十二)
這篇文章主要介紹了PHP網(wǎng)頁(yè)游戲Xnova(ogame)源碼解讀研究頁(yè)面部分,需要的朋友可以參考下2014-06-06
php二維數(shù)組用鍵名分組相加實(shí)例函數(shù)
php二維數(shù)組以鍵名進(jìn)行分組相加的實(shí)例程序2013-11-11
php的sprintf函數(shù)的用法 控制浮點(diǎn)數(shù)格式
這篇文章主要介紹了php的sprintf函數(shù)的用法,需要的朋友可以參考下2014-02-02
php設(shè)置session值和cookies的學(xué)習(xí)示例
一直沒弄懂Session,cookies什么的登陸驗(yàn)證到底是怎么回事,昨天分別用HttpURLConnection和HttpClient兩個(gè)類來實(shí)驗(yàn)了一下,基本弄明白了Session驗(yàn)證登陸的機(jī)制和這兩個(gè)類的區(qū)別。現(xiàn)在分享給大家2014-03-03

