使用microtime(true)可准确测量PHP代码执行时间,通过记录起始和结束时间差计算耗时,结合number_format等函数处理浮点精度问题,并可封装为工具函数用于性能监控。

在PHP开发中,准确测量代码执行时间对性能优化至关重要。使用 microtime() 函数可以获取高精度的时间戳,适合用于计算脚本或某段逻辑的运行耗时。
microtime() 的基本用法
microtime() 返回当前 Unix 时间戳加上微秒数,有两种返回格式:
- 默认返回字符串,如 "0.123456 1712345678",其中前半部分是微秒,后半部分是秒
- 传入 true 参数时返回浮点数,如 1712345678.123456,便于直接做数学运算
推荐使用 microtime(true) 获取浮点型时间,方便后续计算。
计算代码执行耗时
通过记录起始和结束时间,相减即可得到耗时(单位:秒):
立即学习“PHP免费学习笔记(深入)”;
$startTime = microtime(true);// 模拟一段耗时操作 for ($i = 0; $i
$endTime = microtime(true); $elapsed = $endTime - $startTime;
echo "执行耗时:{$elapsed} 秒";
输出结果可能是类似 0.012345 的小数值,表示约 12 毫秒。
浮点精度问题与处理建议
由于 PHP 浮点数基于 IEEE-754 标准,存在精度误差。例如:
$a = 0.1 + 0.2; var_dump($a == 0.3); // 可能为 false在处理耗时时若需高精度比较或格式化输出,建议:
- 使用 number_format() 控制小数位数,如 number_format($elapsed, 6) 保留6位小数
- 避免直接比较浮点数是否相等,改用误差范围判断
- 如需更高精度,可结合 bcadd()、bcsub() 等 BCMath 函数
实用封装示例
可将耗时统计封装成简单工具函数:
function getMicrotime() { return microtime(true); }function formatDuration($seconds) { return number_format($seconds * 1000, 2) . ' ms'; // 转为毫秒并保留两位小数 }
// 使用示例 $start = getMicrotime(); usleep(1000); // 延迟1毫秒 echo formatDuration(getMicrotime() - $start); // 输出:1.00 ms
基本上就这些。microtime 结合浮点处理技巧,足以满足大多数性能监控需求。关键是理解浮点数的局限,并在展示或比较时做适当处理。











