2013-05-07 131 views
2

我正在使用雲託管。 PHP腳本運行時間差垂直刻度變化:php如何計算執行時間?

  • 10S:128MB - 200Mhz的
  • 1S:2GB - 3 GHz的

但我覺得執行時間在這兩個情況下小於1s ,因爲我set_time_limit(1)並沒有顯示超時錯誤。

可以肯定,我使用getrusage()來計算執行時間。在這兩種情況下,他們都小於1秒。

這是什麼行爲?爲什麼第一個設置需要10秒才能執行1s任務而不顯示超時錯誤?

<?php 
set_time_limit(1); 
$rustart = getrusage(); 
echo date("m/d/Y h:i:s a", time()).'<br>'; 

//Begin of the task 
$a = 0; 
for ($i=0; $i<6000000; $i++) { 
    $a = $a + $i; 
    if ($i % 1000000 == 0){ 
    echo "$i <br>"; 
    } 
} 
//End of the task 

echo date("m/d/Y H:i:s a", time()); 
echo '<br>'; 

function rutime($ru, $rus, $index) { 
    return ($ru["ru_$index.tv_sec"]*1000 + intval($ru["ru_$index.tv_usec"]/1000)) 
    ; 
} 
$ru = getrusage(); 
echo "This process used " . rutime($ru, $rustart, "utime") . 
    " ms for its computations<br>"; 
echo "It spent " . rutime($ru, $rustart, "stime") . 
    " ms in system calls<br>"; 
?> 

回答

1

對我來說,就像你錯誤地計算了rutime()中的某些東西。

你爲什麼不使用更簡單的東西來衡量的執行時間是這樣的:

$start = microtime(true); 

//your stuff here 

$end = microtime(true); 
$finish = $end - $start; 
echo $finish;