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 动态参数判空操作
Dec 22 Javascript
event.keyCode键码值表 附只能输入特定的字符串代码
May 15 Javascript
JQUBAR1.1 jQuery 柱状图插件发布
Nov 28 Javascript
判断一个变量是数组Array类型的方法
Sep 16 Javascript
jQuery通用的全局遍历方法$.each()用法实例
Jul 04 Javascript
解析JavaScript数组方法reduce
Dec 12 Javascript
JS常用知识点整理
Jan 21 Javascript
Bootstrap表单制作代码
Mar 17 Javascript
vue-lazyload图片延迟加载插件的实例讲解
Feb 09 Javascript
layui表格 返回的数据状态异常的解决方法
Sep 10 Javascript
layer关闭弹出窗口触发表单提交问题的处理方法
Sep 25 Javascript
React 父子组件通信的实现方法
Dec 05 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
PHP3 safe_mode 失效漏洞
2006/10/09 PHP
jq的get传参数在utf-8中乱码问题的解决php版
2008/07/23 PHP
PHP最常用的2种设计模式工厂模式和单例模式介绍
2012/08/14 PHP
PHP下载远程图片并保存到本地方法总结
2016/01/22 PHP
yii2缓存Caching基本用法示例
2016/07/18 PHP
详细解读php的命名空间(一)
2018/02/21 PHP
7个Javascript地图脚本整理
2009/10/20 Javascript
为调试JavaScript添加输出窗口的代码
2010/02/07 Javascript
JS 精确统计网站访问量的实例代码
2013/07/05 Javascript
Jquery通过Ajax访问XML数据的小例子
2013/11/18 Javascript
js中function()使用方法
2013/12/24 Javascript
浅析jquery ajax异步调用方法中不能给全局变量赋值的原因及解决方法
2014/01/10 Javascript
22点关于jquery性能优化的建议
2014/05/28 Javascript
html的DOM中document对象anchors集合用法实例
2015/01/21 Javascript
JS实现的颜色实时渐变效果完整实例
2016/03/25 Javascript
自己封装的一个简单的倒计时功能实例
2016/11/23 Javascript
微信小程序进行微信支付的步骤昂述
2016/12/01 Javascript
Mongoose经常返回e11000 error的原因分析
2017/03/29 Javascript
vue axios 在页面切换时中断请求方法 ajax
2018/03/05 Javascript
JavaScript事件发布/订阅模式原理与用法分析
2018/08/21 Javascript
vue项目打包后上传至GitHub并实现github-pages的预览
2019/05/06 Javascript
在elementui中Notification组件添加点击事件实例
2020/11/11 Javascript
[51:15]完美世界DOTA2联赛PWL S2 PXG vs Magma 第一场 11.21
2020/11/24 DOTA
Python浅复制中对象生存周期实例分析
2018/04/02 Python
python学习笔记--将python源文件打包成exe文件(pyinstaller)
2018/05/26 Python
对python 通过ssh访问数据库的实例详解
2019/02/19 Python
python 字典 setdefault()和get()方法比较详解
2019/08/07 Python
使用pytorch完成kaggle猫狗图像识别方式
2020/01/10 Python
Python 实现自动完成A4标签排版打印功能
2020/04/09 Python
使用CSS3设计地图上的雷达定位提示效果
2016/04/05 HTML / CSS
大学自我评价
2014/02/12 职场文书
教师批评与自我批评范文
2014/10/15 职场文书
2014年生产管理工作总结
2014/12/23 职场文书
文明单位汇报材料
2014/12/24 职场文书
2015小学教师德育工作总结
2015/05/12 职场文书
mysql 8.0.27 绿色解压版安装教程及配置方法
2022/04/20 MySQL