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 相关文章推荐
javascript 模式设计之工厂模式学习心得
Apr 27 Javascript
javascript 异步页面查询实现代码(asp.net)
May 26 Javascript
jquery 的 $("#id").html() 无内容的解决方法
Jun 07 Javascript
解决jquery的datepicker的本地化以及Today问题
May 23 Javascript
javascript实现checkbox复选框实例代码
Jan 10 Javascript
Bootstrap Paginator分页插件使用方法详解
May 30 Javascript
vue中使用localstorage来存储页面信息
Nov 04 Javascript
Javascript实现异步编程的过程
Jun 18 Javascript
微信小程序利用canvas 绘制幸运大转盘功能
Jul 06 Javascript
JS为什么说async/await是generator的语法糖详解
Jul 11 Javascript
基于JavaScript获取url参数2种方法
Apr 17 Javascript
vue添加自定义右键菜单的完整实例
Dec 08 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
超外差式晶体管收音机的组装与统调
2021/03/01 无线电
php实现批量修改文件名称的方法
2016/07/23 PHP
关于php 高并发解决的一点思路
2017/04/16 PHP
extjs 3.31 TreeGrid实现静态页面加载json到TreeGrid里面
2013/04/02 Javascript
jquery中通过父级查找进行定位示例
2013/06/28 Javascript
Extjs3.0 checkboxGroup 动态添加item实现思路
2013/08/14 Javascript
jQuery截取指定长度字符串的实现原理及代码
2014/07/01 Javascript
node.js+Ajax实现获取HTTP服务器返回数据
2014/11/26 Javascript
使用js获取图片原始尺寸
2014/12/03 Javascript
jQuery插件开发的五种形态小结
2015/03/04 Javascript
JavaScript通过function定义对象并给对象添加toString()方法实例分析
2015/03/23 Javascript
jquery实现弹出层效果实例
2015/05/19 Javascript
基于Bootstrap里面的Button dropdown打造自定义select
2016/05/30 Javascript
JavaScript中Array的实用操作技巧分享
2016/09/11 Javascript
基于vue.js实现侧边菜单栏
2017/03/20 Javascript
node koa2实现上传图片并且同步上传到七牛云存储
2017/07/31 Javascript
js图片查看器插件用法示例
2019/06/22 Javascript
jQuery 判断元素是否存在然后按需加载内容的实现代码
2020/01/16 jQuery
python中list循环语句用法实例
2014/11/10 Python
Python语言实现机器学习的K-近邻算法
2015/06/11 Python
Python基于Tkinter实现的记事本实例
2015/06/17 Python
Python反转序列的方法实例分析
2018/03/21 Python
python实现写数字文件名的递增保存文件方法
2018/10/25 Python
解决pycharm运行时interpreter为空的问题
2018/10/29 Python
Python数据分析:手把手教你用Pandas生成可视化图表的教程
2018/12/15 Python
python利用Tesseract识别验证码的方法示例
2019/01/21 Python
windows安装TensorFlow和Keras遇到的问题及其解决方法
2019/07/10 Python
pytorch多GPU并行运算的实现
2019/09/27 Python
Python 日期时间datetime 加一天,减一天,加减一小时一分钟,加减一年
2020/04/16 Python
python 自动识别并连接串口的实现
2021/01/19 Python
奥林匹亚体育:Olympia Sports
2020/12/30 全球购物
计算机学生求职信范文
2014/01/30 职场文书
鼓舞士气的口号
2014/06/16 职场文书
科学育儿宣传标语
2014/10/08 职场文书
导游词之平津战役纪念馆
2019/11/04 职场文书
浅析Redis Sentinel 与 Redis Cluster
2021/06/24 Redis