PHP实现记录代码运行时间封装类实例教程


Posted in Javascript onMay 08, 2017

前言

本文介绍的是利用php记录代码运行时间测量的相关内容,分享给大家供大家参考学习。一般在要求性能的代码中, 会加入测试代码进行计算。不过每次都要写microtime, end ? start 未必太麻烦了, 所以简单的写了一个类去搞,下面来看看详细的介绍:

示例代码

class TimeCost
{

 private $cost = array();
 private $record = array();
 private $scale = 6;
 public function __construct($scale = 6)
 {
 $this->cost = array();
 $this->record = array();
 $this->scale = $scale;
 }

 public function __toString()
 {
 return $this->getString();
 }

 /**
 * start to cal time.
 *
 * @param mixed $key
 */
 public function addCost($key)
 {
 $this->cost[$key] = microtime(true);
 }

 /**
 * stop to cal time.
 *
 * @param mixed $key
 */
 public function closeCost($key)
 {
 $cost = bcsub(microtime(true), $this->cost[$key], $this->scale);

 if (in_array($key, array_keys($this->record))) {
  $this->record[$key] = bcadd($cost, $this->record[$key], $this->scale);
 } else {
  $this->record[$key] = $cost;
 }
 return $cost;
 }

 
 public function getString($key = null)
 {
 if ($key) {
  return "{$key}[{$this->record[$key]}]";
 }

 $str = '';
 foreach ($this->record as $k => $v) {
  $str .= "{$k}[{$v}]";
 }
 return $str;
 }
}

用法

$obj = new TimeCost();
$token = 'test_a';
$obj->addCost($token);
some_code();

$obj->closeCost($token);
$reslut = $obj->getString($token);

说明

1、时间精度: 默认是保留了6位, 已经足够了, 想要更高精度, 可以在new对象的时候指定$scale参数

2、token: token是为了表示某段代码, 对应的结果会以key(token), value的形式写入到record数组中。

所以用一个token多次进行addCost和closeClost的结果会进行累积。

3、getString: 传递token则返回token对应的结果, 默认会将record中的所有结果拼接返回。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
IE浏览器PNG图片透明效果代码
Sep 02 Javascript
使用JQuery和s3captche实现一个水果名字的验证
Aug 14 Javascript
js压缩工具 yuicompressor 使用教程
Mar 31 Javascript
javascript preload&lazy load
May 13 Javascript
js中document.write使用过程中的一点疑问解答
Mar 20 Javascript
Bootstrap表格制作代码
Mar 17 Javascript
原生js封装添加class,删除class的实例
Nov 06 Javascript
JS实现的汉字与Unicode码相互转化功能分析
May 25 Javascript
如何用webpack4带你实现一个vue的打包的项目
Jun 20 Javascript
JS通过ajax + 多列布局 + 自动加载实现瀑布流效果
May 30 Javascript
解决layui的input独占一行的问题
Sep 10 Javascript
JS Thunk 函数的含义和用法实例总结
Apr 08 Javascript
jquery平滑滚动到顶部插件使用详解
May 08 #jQuery
H5上传本地图片并预览功能
May 08 #Javascript
jQuery实现select下拉框获取当前选中文本、值、索引
May 08 #jQuery
vue2.0实现导航菜单切换效果
May 08 #Javascript
jquery replace方法去空格
May 08 #jQuery
jQuery实现在HTML文档加载完毕后自动执行某个事件的方法
May 08 #jQuery
html5+canvas实现支持触屏的签名插件教程
May 08 #Javascript
You might like
php 获取客户端的真实ip
2009/11/30 PHP
使用php-timeit估计php函数的执行时间
2015/09/06 PHP
Laravel学习教程之本地化模块
2017/08/18 PHP
详谈PHP中public,private,protected,abstract等关键字的用法
2017/12/31 PHP
javascript实现的像java、c#之类的sleep暂停的函数代码
2010/03/04 Javascript
让AJAX不依赖后端接口实现方案
2012/12/03 Javascript
解决jquery异步按一定的时间间隔刷新问题
2012/12/10 Javascript
Jquery结合HTML5实现文件上传
2015/06/25 Javascript
jQuery检查事件是否触发的方法
2015/06/26 Javascript
javascript回到顶部特效
2016/07/30 Javascript
JS实现字符串去重及数组去重的方法示例
2018/04/21 Javascript
详解使用jQuery.i18n.properties实现js国际化
2018/05/04 jQuery
jQuery easyui datagird编辑行删除行功能的实现代码
2018/09/20 jQuery
解决vue自定义指令导致的内存泄漏问题
2020/08/04 Javascript
决策树的python实现方法
2014/11/18 Python
编写Python爬虫抓取豆瓣电影TOP100及用户头像的方法
2016/01/20 Python
使用Python从有道词典网页获取单词翻译
2016/07/03 Python
python实现简单tftp(基于udp协议)
2018/07/30 Python
Python 编程速成(推荐)
2019/04/15 Python
python中从for循环延申到推导式的具体使用
2019/11/29 Python
Python3 Tensorlfow:增加或者减小矩阵维度的实现
2020/05/22 Python
Python新手学习标准库模块命名
2020/05/29 Python
Python 代码调试技巧示例代码
2020/08/11 Python
深入理解css中vertical-align属性
2017/04/18 HTML / CSS
有个性的自我评价范文
2013/11/15 职场文书
仓库管理专业个人的自我评价
2013/12/30 职场文书
保护环境演讲稿
2014/05/10 职场文书
助人为乐模范事迹材料
2014/06/02 职场文书
个人委托书如何写
2014/09/25 职场文书
爱岗敬业事迹材料
2014/12/24 职场文书
2015年党支部书记工作总结
2015/05/21 职场文书
2015年会计人员工作总结
2015/05/22 职场文书
2015年国庆节广播稿
2015/08/19 职场文书
python单元测试之pytest的使用
2021/06/07 Python
quickjs 封装 JavaScript 沙箱详情
2021/11/02 Javascript
如何设置多台电脑共享打印机?多台电脑共享打印机的方法
2022/04/08 数码科技