gettimeofday()是PHP 內置的函數,它返回當前時間的詳細信息,包括秒和微秒。其返回值是一個數組,包含如下鍵:
sec :當前時間的秒數(從Unix 紀元開始計算)
usec :當前秒內的微秒數
通過這兩個值,我們可以得到比time()或者microtime()更精確的時間戳,適合高精度性能測試。
基本思路是:記錄代碼執行前後的時間差,計算出執行時間。
<?php
// 記錄開始時間
$start = gettimeofday();
// 這裡放置你想測試的代碼
usleep(500000); // 模擬延遲 0.5 秒
// 記錄結束時間
$end = gettimeofday();
// 計算時間差,單位為秒(含微秒)
$duration = ($end['sec'] - $start['sec']) + ($end['usec'] - $start['usec']) / 1000000;
echo "代碼執行時間:{$duration} 秒";
?>
以上代碼中:
gettimeofday()返回一個關聯數組。
我們分別計算秒數差和微秒數差,再轉換成秒。
最終得到的$duration是一個浮點數,表示代碼運行的精確秒數。
假設我們想測試一個函數的性能:
<?php
function testFunction() {
$sum = 0;
for ($i = 0; $i < 1000000; $i++) {
$sum += $i;
}
return $sum;
}
$start = gettimeofday();
$result = testFunction();
$end = gettimeofday();
$duration = ($end['sec'] - $start['sec']) + ($end['usec'] - $start['usec']) / 1000000;
echo "函數執行結果:$result\n";
echo "執行時間:{$duration} 秒\n";
?>
這個示例中,我們測量了testFunction()函數執行的時間,方便我們評估函數性能。
高精度:微秒級別時間測量,比time()精確。
簡單易用:返回值為數組,秒和微秒信息清晰。
無依賴:PHP 內置函數,無需安裝擴展。
gettimeofday()返回的時間是服務器當前時間,可能受系統時間調整影響,不適合做跨服務器或分佈式的時間比較。
對於非常短的代碼段,執行時間可能非常小,建議多次運行併計算平均值以獲得更穩定的結果。