PHP 分析 - 为相同的代码段获得非常不同的持续时间
Posted
技术标签:
【中文标题】PHP 分析 - 为相同的代码段获得非常不同的持续时间【英文标题】:PHP profiling - getting very different durations for same pieces of code 【发布时间】:2013-05-09 11:59:13 【问题描述】:我正在使用microtime(true)
来测量我的 php 代码运行需要多长时间,但我得到了奇怪的结果。
有时需要 1 厘秒,有时需要 2 秒,看起来完全随机。我总是在那个代码中做同样的事情(定义一些常量并用对象构建一个 html 页面)
-
没有随机部分
无磁盘访问权限(文件包含除外)
没有会话访问,没有数据库访问,和
除了操作系统的程序外,没有其他程序同时运行。
这可能是什么原因造成的? microtime 函数的精度如何?
【问题讨论】:
您这样做的频率如何?有许多影响可能会改变测量时间。 有太多的原因要列出执行时间会随着时间的推移而略有不同。此外,如果您只显示不带小数的“厘秒”,则 1.9999 厘秒和 2.0000 厘秒之间的差异似乎是 1。 如果你的代码运行时间超过一个时间片(即使你的计算机“空闲”它会定期切换任务)你会得到这种效果,这就是为什么你应该运行代码 x 次并计算平均。看看Ning's microbenchmarking framework 以获得一些灵感。 我在页面上显示了我多次刷新的结果(是的,我正在使用 end - start)。结果有时是 0.0124 .... 有时是 0.0253 ... 我没有将值转换为整数。我会尝试运行它几次。 【参考方案1】:你确定你使用正确吗?
microtime() 不返回执行脚本所花费的时间。
这是一个来自 php.net 的示例,用于计算脚本执行时间。
<?php
$time_start = microtime(true);
// Sleep for a while
usleep(100);
$time_end = microtime(true);
$time = $time_end - $time_start;
echo "Did nothing in $time seconds\n";
?>
【讨论】:
是的,我就是这样用的。以上是关于PHP 分析 - 为相同的代码段获得非常不同的持续时间的主要内容,如果未能解决你的问题,请参考以下文章
在 Core ML 中使用 MLClassifier 始终为不同的输入获得相同的预测
使用 blackfire.io 分析 PHP 7 应用程序,为啥我看到相同代码的不同 cpu 时间?
在 j2me 和 NetBeans 中运行相同代码时获得不同的输出