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 相关文章推荐
用ADODB.Stream转换
Jan 22 Javascript
jQuery 获取对象 根据属性、内容匹配, 还有表单元素匹配
May 31 Javascript
jQuery选择器的工作原理和优化分析
Jul 25 Javascript
js this函数调用无需再次抓获id,name或标签名
Mar 03 Javascript
js实现复选框的全选和取消全选效果
Jan 03 Javascript
微信小程序实现页面跳转传值以及获取值的方法分析
Dec 18 Javascript
js异步上传多张图片插件的使用方法
Oct 22 Javascript
利用d3.js力导布局绘制资源拓扑图实例教程
Jan 08 Javascript
微信小程序实现页面分享onShareAppMessage
Aug 12 Javascript
node 解析图片二维码的内容代码实例
Sep 11 Javascript
纯js+css实现在线时钟
Aug 18 Javascript
给原生html中添加水印遮罩层的实现示例
Apr 02 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
ThinkPHP中的三大自动简介
2014/08/22 PHP
PHP中static关键字以及与self关键字的区别
2015/07/01 PHP
php获取今日开始时间和结束时间的方法
2017/02/27 PHP
基于prototype扩展的JavaScript常用函数库
2010/11/30 Javascript
jquery插件tooltipv顶部淡入淡出效果使用示例
2013/12/05 Javascript
对js关键字命名的疑问介绍
2014/04/25 Javascript
高性能JavaScript模板引擎实现原理详解
2015/02/05 Javascript
如何使用headjs来管理和异步加载js
2016/11/29 Javascript
angularJS+requireJS实现controller及directive的按需加载示例
2017/02/20 Javascript
如何理解Vue的.sync修饰符的使用
2017/08/17 Javascript
nodejs对express中next函数的一些理解
2017/09/08 NodeJs
JavaScript中变量提升与函数提升经典实例分析
2018/07/26 Javascript
Vue-router 报错NavigationDuplicated的解决方法
2020/03/31 Javascript
Layui弹框中数据表格中可双击选择一条数据的实现
2020/05/06 Javascript
Python logging模块学习笔记
2014/05/24 Python
跟老齐学Python之通过Python连接数据库
2014/10/28 Python
python实现的jpg格式图片修复代码
2015/04/21 Python
深入理解Python中变量赋值的问题
2017/01/12 Python
Python使用openpyxl读写excel文件的方法
2017/06/30 Python
Python 实现在文件中的每一行添加一个逗号
2018/04/29 Python
python爬虫框架scrapy实现模拟登录操作示例
2018/08/02 Python
用python生成1000个txt文件的方法
2018/10/25 Python
python使用正则来处理各种匹配问题
2019/12/22 Python
python pip安装包出现:Failed building wheel for xxx错误的解决
2019/12/25 Python
HTML5实现签到 功能
2018/10/09 HTML / CSS
梅西百货官网:Macy’s
2020/08/04 全球购物
大学生四个方面的自我评价
2013/09/19 职场文书
好的自荐信的要求
2013/10/30 职场文书
会计学应届毕业生推荐信
2013/11/04 职场文书
工程管理造价应届生求职信
2013/11/13 职场文书
十佳文明家庭事迹
2014/05/25 职场文书
俞敏洪一分钟演讲稿
2014/08/26 职场文书
生产工厂门卫岗位职责
2014/09/26 职场文书
2015感人爱情寄语
2015/02/26 职场文书
小学远程教育工作总结
2015/08/13 职场文书
Python3使用Qt5来实现简易的五子棋小游戏
2022/05/02 Python