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 相关文章推荐
Jquery中val()表单取值赋值的实例代码
Aug 15 Javascript
js定时调用方法成功后并停止调用示例
Apr 08 Javascript
JS实现网页背景颜色与select框中颜色同时变化的方法
Feb 27 Javascript
JS基于构造函数实现的菜单滑动显隐效果【测试可用】
Jun 21 Javascript
jQuery实现对无序列表的排序功能(附demo源码下载)
Jun 25 Javascript
JavaScript随机生成颜色的方法
Oct 15 Javascript
jQuery实现checkbox列表的全选、反选功能
Nov 24 Javascript
jQueryUI 拖放排序遇到滚动条时有可能无法执行排序的小bug及解决方案
Dec 19 Javascript
JavaScript常用正则验证函数实例小结【年龄,数字,Email,手机,URL,日期等】
Jan 23 Javascript
Js中使用正则表达式验证输入是否有特殊字符
Sep 07 Javascript
react使用CSS实现react动画功能示例
May 18 Javascript
详解Vue2的diff算法
Jan 06 Vue.js
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写的小东西
2006/12/06 PHP
php中比较简单的导入phpmyadmin生成的sql文件的方法
2011/06/28 PHP
Php output buffering缓存及程序缓存深入解析
2013/07/15 PHP
php微信公众平台开发(一) 配置接口
2016/12/06 PHP
php mysql PDO 查询操作的实例详解
2017/09/23 PHP
PHP预定义超全局数组变量小结
2018/08/20 PHP
YII2框架中日志的配置与使用方法实例分析
2020/03/18 PHP
学习ExtJS Window常用方法
2009/10/07 Javascript
使用Mootools动态添加Css样式表代码,兼容各浏览器
2011/12/12 Javascript
使用indexOf等在JavaScript的数组中进行元素查找和替换
2013/09/18 Javascript
jquery批量设置属性readonly和disabled的方法
2014/01/24 Javascript
javascript生成随机数的方法
2014/05/16 Javascript
基于jquery实现页面滚动到底自动加载数据的功能
2015/12/19 Javascript
原生js配合cookie制作保存路径的拖拽
2015/12/29 Javascript
JS+CSS3制作炫酷的弹窗效果
2016/11/08 Javascript
详解微信小程序开发之下拉刷新 上拉加载
2016/11/24 Javascript
Vue2.0系列之过滤器的使用
2018/03/01 Javascript
通过Nodejs搭建网站简单实现注册登录流程
2019/06/14 NodeJs
js获取对象,数组所有属性键值(key)和对应值(value)的方法示例
2019/06/19 Javascript
五句话帮你轻松搞定js原型链
2020/12/09 Javascript
在vue项目中封装echarts的步骤
2020/12/25 Vue.js
[03:18]【TI9纪实】社区大触GL与木木
2019/08/25 DOTA
Python去掉字符串中空格的方法
2014/03/11 Python
初步介绍Python中的pydoc模块和distutils模块
2015/04/13 Python
Python单例模式的两种实现方法
2017/08/14 Python
详解用python自制微信机器人,定时发送天气预报
2019/03/25 Python
python 图像处理画一个正弦函数代码实例
2019/09/10 Python
详解Python 最短匹配模式
2020/07/29 Python
HTML5学习心得总结(推荐)
2016/07/08 HTML / CSS
Auchan Direct波兰:欧尚在线杂货店
2016/10/19 全球购物
办公室经理岗位职责
2014/01/01 职场文书
2014小学植树节活动总结
2014/03/10 职场文书
2014年班主任工作总结
2014/11/08 职场文书
2015年财政所工作总结
2015/04/25 职场文书
解决Mysql的left join无效及使用的注意事项说明
2021/07/01 MySQL
Python 数据可视化神器Pyecharts绘制图像练习
2022/02/28 Python