我一直在寻找的一些功能的执行时间,但我已经发现,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