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中arguments对象详解
Oct 22 Javascript
Javascript冒泡排序算法详解
Dec 03 Javascript
jquery实现Li滚动时滚动条自动添加样式的方法
Aug 10 Javascript
使用jQuery Mobile框架开发移动端Web App的入门教程
May 17 Javascript
JS从一组数据中找到指定的单条数据的方法
Jun 02 Javascript
逻辑表达式中与或非的用法详解
Jun 06 Javascript
jQuery实现三级联动效果
Mar 02 Javascript
微信小程序商品详情页规格属性选择示例代码
Oct 30 Javascript
微信小程序使用picker实现时间和日期选择框功能【附源码下载】
Dec 11 Javascript
基于Vue2x的图片预览插件的示例代码
May 14 Javascript
JS实现手写 forEach算法示例
Apr 29 Javascript
js实现简单的随机点名器
Sep 17 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
prototype 源码中文说明之 prototype.js
2006/09/22 Javascript
如何做到打开一个页面,过几分钟自动转到另一页面
2007/04/20 Javascript
多浏览器兼容的获取元素和鼠标的位置的js代码
2009/12/15 Javascript
JavaScript replace(rgExp,fn)正则替换的用法
2010/03/04 Javascript
解读JavaScript代码 var ie = !-[1,] 最短的IE判定代码
2011/05/28 Javascript
基于jquery实现漂亮的动态信息提示效果
2011/08/02 Javascript
window.opener用法和用途实例介绍
2013/08/19 Javascript
js去除输入框中所有的空格和禁止输入空格的方法
2014/06/09 Javascript
javascript基本类型详解
2014/11/28 Javascript
js实现横向百叶窗效果网页切换动画效果的方法
2015/03/02 Javascript
js中数组结合字符串实现查找(屏蔽广告判断url等)
2016/03/30 Javascript
JQuery控制图片由中心点逐渐放大效果
2016/06/26 Javascript
AngularJS中directive指令使用之事件绑定与指令交互用法示例
2016/11/22 Javascript
Laravel整合Bootstrap 4的完整方案(推荐)
2018/01/25 Javascript
vue项目中axios使用详解
2018/02/07 Javascript
vue-cli结合Element-ui基于cropper.js封装vue实现图片裁剪组件功能
2018/03/01 Javascript
JavaScript设计模式之工厂模式和抽象工厂模式定义与用法分析
2018/07/26 Javascript
layui弹出层按钮提交iframe表单的方法
2018/08/20 Javascript
富文本编辑器vue2-editor实现全屏功能
2019/05/26 Javascript
vue 实现走马灯效果
2019/10/28 Javascript
[04:26]2014DOTA2西雅图国际邀请赛 总决赛TOPPLAY
2014/07/22 DOTA
Python算术运算符实例详解
2017/05/31 Python
使用Python获取并处理IP的类型及格式方法
2018/11/01 Python
python项目对接钉钉SDK的实现
2019/07/15 Python
python实现H2O中的随机森林算法介绍及其项目实战
2019/08/29 Python
python属于软件吗
2020/06/18 Python
Django中F函数的使用示例代码详解
2020/07/06 Python
实现Python3数组旋转的3种算法实例
2020/09/16 Python
乌克兰电子和家用电器商店:Foxtrot
2019/07/23 全球购物
两则小学生的自我评价分享
2013/11/14 职场文书
教育课题研究自我鉴定范文
2013/12/28 职场文书
军训拉歌口号
2014/06/13 职场文书
2014大学生中国梦主题教育学习思想汇报
2014/09/10 职场文书
2014年售票员工作总结
2014/11/19 职场文书
思想道德自我评价2015
2015/03/09 职场文书
2019公司借款合同范本2篇!
2019/07/24 职场文书