我一直在尋找的一些功能的執行時間,但我已經發現,microtime中越來越不對勁,在一個microtime()
PHP microtime中奇怪的行爲
實施№1總是第一時間總是越來越然後第二microtime()
執行當我測試的一個功能,看到一個情況下更快那麼另一個,但發生之後更換(第2個功能,以第一名),它越來越慢,無論如何,即使是快3倍......
function dotimes($times,$eval,$data=false) {for(;--$times;) eval($eval);}
$start = microtime(true);
dotimes(1000,'$i = $i?$times/2:1;');
printf(": executed : %f\n",microtime(true)-$start);
$start = microtime(true);
dotimes(1000,'$i = $i?$times/2:1;');
printf(": executed : %f\n",microtime(true)-$start);
// 1st case is always slower...
實施№2 IV之前microtime()
作爲靜態數據存儲有時製成,但在這種情況下執行的時間總是第二時間較慢則第一(oposite實施№1)
function get_execution_time()
{
static $microtime_start = null;
return $microtime_start === null ? $microtime_start = microtime(true) : microtime(true) - $microtime_start;
}
function dotimes($times,$eval,$data=false) {for(;--$times;) eval($eval);}
get_execution_time();
dotimes(1000,'$i = $i?$times/2:1;');
printf(": executed : %f\n<br>",get_execution_time());
get_execution_time();
dotimes(1000,'$i = $i?$times/2:1;');
printf(": executed : %f\n<br>",get_execution_time());
//now 2nd case is faster..
- 有人可以告訴我什麼是?爲什麼這些microtimes在一種情況下總是第一個慢,throught靜態存儲第二執行速度慢了下來,爲什麼?
PS,如果有人需要微小的MT功能,這裏是我固定和工作正確:
function get_mt() {static $mt; return $mt ? microtime(true)-$mt.$mt=null : $mt=microtime(true);}
附:
function get_mt() {static $mt; return $mt?microtime(true)-$mt:$mt=microtime(true);}
function dotimes($times,$eval,$data=false) {for(;--$times;) eval($eval);}
$start = microtime(true);
get_mt();
dotimes(10000,'$i = $i?$times/2:1;');
printf(":clean executed : %f\n<br>",microtime(true)-$start);
printf(":static executed : %f\n<br>",get_mt());
$start = microtime(true);
get_mt();
dotimes(10000,'$i = $i?$times/2:1;');
printf(":clean executed : %f\n<br>",microtime(true)-$start);
printf(":static executed : %f\n<br>",get_mt());
'的eval()'真的嗎? – PeeHaa 2012-07-28 14:47:54
只是用於測試,不管我可以放入任何函數,並在第一種情況下 - 總是第二次執行更快。在第二種情況下,總是第二個exec變慢 – Jacob88 2012-07-28 14:48:38
問題是什麼?給工作實施例... – meze 2012-07-28 15:01:34