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 相关文章推荐
音乐播放用的的几个函数
Sep 07 Javascript
js+xml生成级联下拉框代码
Jul 24 Javascript
js jquery验证银行卡号信息正则学习
Jan 21 Javascript
JavaScript 对任意元素,自定义右键菜单的实现方法
May 08 Javascript
jquery实现简单的拖拽效果实例兼容所有主流浏览器(优化篇)
Jun 28 Javascript
使用jquery hover事件实现表格的隔行换色功能示例
Sep 03 Javascript
jQuery中attr()和prop()在修改checked属性时的区别
Jul 18 Javascript
JavaScript判断变量是否为空的自定义函数分享
Jan 31 Javascript
js实现Select头像选择实时预览代码
Aug 17 Javascript
jQuery实现的fixedMenu下拉菜单效果代码
Aug 24 Javascript
JS模拟实现ECMAScript5新增的数组方法
Mar 20 Javascript
js模拟实现烟花特效
Mar 10 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 stripos()函数及注意事项的分析
2013/06/08 PHP
Yii2主题(Theme)用法详解
2016/07/23 PHP
JavaScript 页面编码与浏览器类型判断代码
2010/06/03 Javascript
JQuery EasyUI 对话框的使用方法
2010/10/24 Javascript
理解javascript中的回调函数(callback)
2014/09/02 Javascript
Javascript 完美运动框架(逐行分析代码,让你轻松了运动的原理)
2015/01/23 Javascript
javascript正则表达式中的replace方法详解
2015/04/20 Javascript
JavaScript实现简单的tab选项卡切换
2016/01/05 Javascript
纯js实现手风琴效果
2020/04/17 Javascript
最全面的百度地图JavaScript离线版开发
2016/09/10 Javascript
分分钟玩转Vue.js组件
2016/10/25 Javascript
JavaScript函数柯里化原理与用法分析
2017/03/31 Javascript
微信小程序 共用变量值的实现
2017/07/12 Javascript
在knockoutjs 上自己实现的flux(实例讲解)
2017/12/18 Javascript
JS中的回调函数实例浅析
2018/03/21 Javascript
react在安卓中输入框被手机键盘遮挡问题的解决方法
2018/09/03 Javascript
傻瓜式vuex语法糖kiss-vuex整理
2018/12/21 Javascript
[37:35]DOTA2上海特级锦标赛A组资格赛#1 Secret VS MVP.Phx第二局
2016/02/25 DOTA
python 控制语句
2011/11/03 Python
python中的列表推导浅析
2014/04/26 Python
pymongo实现控制mongodb中数字字段做加法的方法
2015/03/26 Python
举例讲解Python设计模式编程的代理模式与抽象工厂模式
2016/01/16 Python
学习python之编写简单简单连接数据库并执行查询操作
2016/02/27 Python
解决Atom安装Hydrogen无法运行python3的问题
2019/08/28 Python
解决Django layui {{}}冲突的问题
2019/08/29 Python
Python 50行爬虫抓取并处理图灵书目过程详解
2019/09/20 Python
TensorFlow tf.nn.conv2d_transpose是怎样实现反卷积的
2020/04/20 Python
python实现凯撒密码、凯撒加解密算法
2020/06/11 Python
matplotlib相关系统目录获取方式小结
2021/02/03 Python
Expedia意大利旅游网站:酒店、机票和租车预订
2017/10/30 全球购物
您附近的水疗和健康场所:Spafinder(美国)
2019/07/05 全球购物
当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
2014/09/09 面试题
日化店促销方案
2014/03/26 职场文书
525心理活动总结
2014/07/04 职场文书
机关作风建设剖析材料
2014/10/11 职场文书
2016年度师德标兵先进事迹材料
2016/02/26 职场文书