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 相关文章推荐
MSN消息提示类
Sep 05 Javascript
Javascript(AJAX)解析XML的代码(兼容FIREFOX/IE)
Jul 11 Javascript
javascript实现TreeView 无刷新展开的实例代码
Jul 13 Javascript
Node.js刷新session过期时间的实现方法推荐
May 18 Javascript
如何用JavaScript实现动态修改CSS样式表
May 20 Javascript
Bootstrap table表格简单操作
Feb 07 Javascript
使用jQuery ajaxupload插件实现无刷新上传文件
Apr 23 jQuery
jQuery表单验证之密码确认
May 22 jQuery
vue自定义全局组件(自定义插件)的用法
Jan 30 Javascript
vue页面加载闪烁问题的解决方法
Mar 28 Javascript
vue组件name的作用小结
May 23 Javascript
详解Jest结合Vue-test-utils使用的初步实践
Jun 27 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
PHP中Session的概念
2006/10/09 PHP
图书管理程序(一)
2006/10/09 PHP
php连接oracle数据库的核心步骤
2016/05/26 PHP
PHP 根据key 给二维数组分组
2016/12/09 PHP
JavaScript面象对象设计
2008/04/28 Javascript
Ext javascript建立超链接,进行事件处理的实现方法
2009/03/22 Javascript
选择TreeView控件的树状数据节点的JS方法(jquery)
2010/02/06 Javascript
js function定义函数的几种不错方法
2014/02/27 Javascript
Node.js中AES加密和其它语言不一致问题解决办法
2014/03/10 Javascript
使用JSON.parse将json字符串转换成json对象的时候会出错
2014/09/04 Javascript
jQuery往返城市和日期查询实例讲解
2015/10/09 Javascript
JavaScript严格模式下关于this的几种指向详解
2017/07/12 Javascript
nodejs中解决异步嵌套循环和循环嵌套异步的问题
2017/07/12 NodeJs
Angular实现双向折叠列表组件的示例代码
2017/11/21 Javascript
Vue组件库发布到npm详解
2018/02/17 Javascript
jQuery实现图片简单轮播功能示例
2018/08/13 jQuery
JavaScript基于用户照片姓名生成海报
2020/05/29 Javascript
微信小程序文章详情功能完整实例
2020/06/03 Javascript
python打开url并按指定块读取网页内容的方法
2015/04/29 Python
详解python中Numpy的属性与创建矩阵
2018/09/10 Python
numpy库与pandas库axis=0,axis= 1轴的用法详解
2019/05/27 Python
python获取指定日期范围内的每一天,每个月,每季度的方法
2019/08/08 Python
Python中six模块基础用法
2019/12/08 Python
Python3.5 win10环境下导入kera/tensorflow报错的解决方法
2019/12/19 Python
用纯css3实现的图片放大镜特效效果非常不错
2014/09/02 HTML / CSS
如何使用css3实现一个类在线直播的队列动画的示例代码
2020/06/17 HTML / CSS
您的网上新华书店:文轩网
2016/08/24 全球购物
Banana Republic英国官网:香蕉共和国,GAP集团旗下偏贵族风
2018/04/24 全球购物
杭州时比特电子有限公司SQL
2013/08/22 面试题
应届大学生简历中的自我评价
2014/01/15 职场文书
电教室标语
2014/06/20 职场文书
医学专业大学生求职信
2014/07/12 职场文书
孔子观后感
2015/06/08 职场文书
夏洛特的网观后感
2015/06/15 职场文书
关于保护环境的建议书
2019/06/24 职场文书
Python采集壁纸并实现炫轮播
2022/04/30 Python