php 计算代码执行耗时毫秒,推荐使用 hrtime() 函数配合布尔参数 true 获取微秒级时间戳,通过前后相减并乘以 1000 得到毫秒数。该方法基于高精度系统时钟,比传统的 microtime() 更准确且性能开销更低,能精确捕捉纳秒级的执行差异。

hrtime(true) 返回的数据类型是什么
hrtime(true) 返回的是一个 bcmath 兼容的整数或浮点数(取决于 PHP 版本和平台),在 PHP 7.3+ 中通常返回 int 类型的纳秒值。它不是字符串,也不是对象,可以直接参与数学运算。调用时传入 true 表示返回相对时间戳,用于计算差值;若传入 false 则返回关联数组,包含秒和纳秒两部分,需手动组合。

$start = hrtime(true);
// 执行你的代码
$end = hrtime(true);
$durationMs = ($end - $start) / 1000000;
echo "耗时: {$durationMs} 毫秒";
上述代码中,$start 和 $end 均为纳秒级整数。相减后得到的是纳秒差值,除以 1000000 转换为毫秒。由于 PHP 内部对大整数支持良好,即使在高精度场景下也不会出现精度丢失。注意:不要使用 floatval() 强制转换中间结果,以免引入浮点误差。
为什么不用 microtime() 来计算毫秒
microtime() 虽然也能获取微秒时间,但其返回值是字符串格式(如 "0.12345600 1234567890"),需要手动解析并拼接秒与微秒部分,过程繁琐且易出错。此外,它在某些系统上受限于操作系统时钟分辨率,无法保证高精度。相比之下,hrtime() 直接提供数值型输出,无需字符串处理,逻辑更简洁,适合自动化测试、性能监控等对精度要求高的场景。

$start = microtime(true);
// 执行代码
$end = microtime(true);
$durationMs = ($end - $start) * 1000;
echo "耗时: {$durationMs} 毫秒";
此段代码使用 microtime(true) 获取浮点型时间戳,单位为秒。相减后乘以 1000 得到毫秒。虽然功能可行,但需注意:microtime() 在某些旧版系统中可能因时钟同步问题导致负值或异常波动,而 hrtime() 从设计之初就规避了这些问题。因此,在新项目中应优先选用 hrtime()。
当代码执行时间小于 1 毫秒时,结果是否可靠
当代码执行时间小于 1 毫秒时,hrtime() 仍能返回精确到纳秒的结果,因此完全可靠。例如,一个空循环可能在 0.0001 秒内完成,此时 $durationMs 会显示为 0.1 毫秒,而非四舍五入为 0。这是因为底层系统调用直接读取硬件计数器,不受 PHP 层浮点精度限制。只要系统支持高精度定时器(现代 Linux/Windows/macOS 均支持),该机制即可稳定工作。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











