Discuz教程网

PHP 计算代码执行耗时的代码修正网上普遍错误

[复制链接]
authicon 星火燎原 发表于 2011-5-17 22:16:17 | 显示全部楼层 |阅读模式
前几天测试 SQLite 插入大数据量的时候, 找了一些关于计算执行时间的代码, 发现网上普遍流传着这样一份代码




代码如下:

  1. $t1 = explode(' ', microtime());
  2. // ... 执行代码 ...
  3. $t2 = explode(' ', microtime());
  4. echo ($t2[1]-$t1[1]).'s '.($t2[0]-$t1[0]).'ms';
复制代码



其实稍微试一下, 就能发现这份代码有个严重的问题. 虽然 t2 得到的时间肯定比 t1 大, 但不代表, 它的微秒数就一定比 t1 的微秒数大. 所以直接相减的话, ms 部分有可能得到的是负数. 因此, 我自己稍微改动了一下, 代码如下:
代码如下:


  1. $t1 = microtime(true);
  2. // ... 执行代码 ...
  3. $t2 = microtime(true);
  4. echo '耗时'.round($t2-$t1,3).'秒';

复制代码

简单说一下. microtime() 如果带个 true 参数, 返回的将是一个浮点类型. 这样 t1 和 t2 得到的就是两个浮点数, 相减之后得到之间的差. 由于浮点的位数很长, 或者说不确定, 所以再用个 round() 取出小数点后 3 位. 这样我们的目的就达到了~




上一篇:php中在PDO中使用事务
下一篇:PHP与C#分别格式化文件大小的代码
authicon 21585151 发表于 2011-5-18 05:29:49 | 显示全部楼层
看看  好像不错
authicon D_hong 发表于 2011-5-19 05:29:55 | 显示全部楼层
顶啦,不错吧
authicon 月之海洋 发表于 2011-5-19 11:29:44 | 显示全部楼层
好辛苦才找到啊
authicon TRACYFLYING 发表于 2011-5-19 18:31:10 | 显示全部楼层
支持楼主,顶一下
authicon YY大兔子 发表于 2011-5-20 15:30:08 | 显示全部楼层
很好的,我喜欢
authicon 皆无 发表于 2011-5-22 23:59:37 | 显示全部楼层
喜欢喜欢喜欢
authicon lakelouise 发表于 2011-5-25 15:59:47 | 显示全部楼层
顶顶更健康
authicon 皆无 发表于 2011-5-26 08:59:49 | 显示全部楼层
支持楼主,顶一下
authicon lilac_yao 发表于 2011-6-22 07:59:47 | 显示全部楼层
看一下啊,嘻嘻
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1314学习网 ( 浙ICP备10214163号 )

GMT+8, 2025-5-3 15:19

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表