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实现的鼠标下拉滚动置顶效果
Jul 24 Javascript
JavaScript控制网页层收起和展开效果的方法
Apr 15 Javascript
JSON相关知识汇总
Jul 03 Javascript
jQuery实现切换页面过渡动画效果
Oct 29 Javascript
jQuery根据表单name获取值的方法
May 24 Javascript
jquery自适应布局的简单实例
May 28 Javascript
JS检测数组类型的方法小结
Mar 14 Javascript
Node.JS使用Sequelize操作MySQL的示例代码
Oct 09 Javascript
原生js实现form表单序列化的方法
Aug 02 Javascript
layui的select联动实现代码
Sep 28 Javascript
JavaScript实现拖拽功能
Feb 11 Javascript
javascript实现获取中文汉字拼音首字母
May 19 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
建立动态的WML站点(二)
2006/10/09 PHP
PHP实现的折半查找算法示例
2017/12/19 PHP
基于jquery的checkbox下拉框插件代码
2010/06/25 Javascript
关于 文本框默认值 的操作js代码
2012/01/12 Javascript
Prototype源码浅析 String部分(一)之有关indexOf优化
2012/01/15 Javascript
最佳6款用于移动网站开发的jQuery 图片滑块插件小结
2012/07/20 Javascript
Javascript this 的一些学习总结
2012/08/02 Javascript
利用window.name实现windowStorage代码分享
2014/01/02 Javascript
node.js中的fs.rmdir方法使用说明
2014/12/16 Javascript
JavaScript中的this关键字使用详解
2015/08/14 Javascript
js实现跨域的几种方法汇总(图片ping、JSONP和CORS)
2015/10/25 Javascript
JS两种类型的表单提交方法实例分析
2016/11/28 Javascript
jQuery ajax实现省市县三级联动
2021/03/07 Javascript
vue源码学习之Object.defineProperty对象属性监听
2018/05/30 Javascript
基于jQuery实现可编辑的表格
2019/12/11 jQuery
vue style width a href动态拼接问题的解决
2020/08/07 Javascript
JS获取一个字符串中指定字符串第n次出现的位置
2021/02/10 Javascript
Python的Django应用程序解决AJAX跨域访问问题的方法
2016/05/31 Python
Python按行读取文件的实现方法【小文件和大文件读取】
2016/09/19 Python
在Django中输出matplotlib生成的图片方法
2018/05/24 Python
pyspark 读取csv文件创建DataFrame的两种方法
2018/06/07 Python
Python PyQt5模块实现窗口GUI界面代码实例
2020/05/12 Python
python使用openpyxl操作excel的方法步骤
2020/05/28 Python
如何利用python读取micaps文件详解
2020/10/18 Python
利用Python如何画一颗心、小人发射爱心
2021/02/21 Python
巧用CSS3 border实现图片遮罩效果代码
2012/04/09 HTML / CSS
详解基于canvas的视频遮罩插件
2018/01/04 HTML / CSS
印度婴儿用品在线商店:Firstcry.com
2016/12/05 全球购物
美国LOGO设计公司:The Logo Company
2018/07/16 全球购物
Python如何实现单例模式
2016/06/03 面试题
房地产广告词大全
2014/03/19 职场文书
新店开张活动方案
2014/08/24 职场文书
Python快速实现一键抠图功能的全过程
2021/06/29 Python
python中tkinter复选框使用操作
2021/11/11 Python
Apache Linkis 中间件架构及快速安装步骤
2022/03/16 Servers
Golang 并发下的问题定位及解决方案
2022/03/16 Golang