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 支持ie和firefox杰奇翻页函数
Jul 22 Javascript
Ruffy javascript 学习笔记
Nov 30 Javascript
JavaScript实用技巧(一)
Aug 16 Javascript
jquery修改网页背景颜色通过css方法实现
Jun 06 Javascript
Javascript实现简单的富文本编辑器附演示
Jun 16 Javascript
JavaScript验证电子邮箱的函数
Aug 22 Javascript
JavaScript+CSS实现的可折叠二级菜单实例
Feb 29 Javascript
vue绑定设置属性的多种方式(5)
Aug 16 Javascript
Vue.js中关于侦听器(watch)的高级用法示例
May 02 Javascript
解决mpvue + vuex 开发微信小程序vuex辅助函数mapState、mapGetters不可用问题
Aug 03 Javascript
微信小程序开发摇一摇功能
Nov 22 Javascript
AJAX实现指定部分页面刷新效果
Oct 16 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
如何取得中文字符串中出现次数最多的子串
2013/08/08 PHP
PHP实现格式化文件数据大小显示的方法
2015/01/03 PHP
jQuery formValidator表单验证插件开源了 含API帮助、源码、示例
2008/08/14 Javascript
jquery1.4 教程二 ajax方法的改进
2010/02/25 Javascript
简单js代码实现selece二级联动(推荐)
2014/02/18 Javascript
javascript从image转换为base64位编码的String
2014/07/29 Javascript
node.js中的fs.rmdir方法使用说明
2014/12/16 Javascript
浅谈jQuery中replace()方法
2015/05/13 Javascript
jquery实现的树形目录实例
2015/06/26 Javascript
理解 JavaScript Scoping & Hoisting(二)
2015/11/18 Javascript
jQuery实现图像旋转动画效果
2016/05/29 Javascript
JavaScript的new date等日期函数在safari中遇到的坑
2016/10/24 Javascript
css和js实现弹出登录居中界面完整代码
2017/11/26 Javascript
解析vue路由异步组件和懒加载案例
2018/06/08 Javascript
移动端如何用下拉刷新的方式实现上拉加载
2018/12/10 Javascript
微信小程序实现基于三元运算验证手机号/姓名功能示例
2019/01/19 Javascript
webpack-url-loader 解决项目中图片打包路径问题
2019/02/15 Javascript
element-ui组件table实现自定义筛选功能的示例代码
2019/03/15 Javascript
react 移动端实现列表左滑删除的示例代码
2019/07/04 Javascript
Python3的urllib.parse常用函数小结(urlencode,quote,quote_plus,unquote,unquote_plus等)
2016/09/18 Python
神经网络python源码分享
2017/12/15 Python
对numpy 数组和矩阵的乘法的进一步理解
2018/04/04 Python
Python字符串内置函数功能与用法总结
2019/04/16 Python
详解python uiautomator2 watcher的使用方法
2019/09/09 Python
使用PyOpenGL绘制三维坐标系实例
2019/12/24 Python
python使用re模块爬取豆瓣Top250电影
2020/10/20 Python
python实现PolynomialFeatures多项式的方法
2021/01/06 Python
Python使用cn2an实现中文数字与阿拉伯数字的相互转换
2021/03/02 Python
Html5跳转到APP指定页面的实现
2020/01/14 HTML / CSS
高中毕业生生活的自我评价
2013/12/08 职场文书
日本语毕业生自荐信
2014/02/01 职场文书
优秀毕业生自我鉴定
2014/02/11 职场文书
yy生日主持词
2014/03/20 职场文书
投资建议书模板
2014/05/12 职场文书
故意伤害辩护词
2015/05/21 职场文书
小学运动会开幕词
2016/03/04 职场文书