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() 返回的时间是服务器当前时间,可能受系统时间调整影响,不适合做跨服务器或分布式的时间比较。
对于非常短的代码段,执行时间可能非常小,建议多次运行并计算平均值以获得更稳定的结果。