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 相关文章推荐
ajax的hide隐藏问题解决方法
Dec 11 Javascript
IE、FF、Chrome浏览器中的JS差异介绍
Aug 13 Javascript
sso跨域写cookie的一段js脚本(推荐)
May 25 Javascript
JS中作用域和变量提升(hoisting)的深入理解
Oct 31 Javascript
JS实现探测网站链接的方法【测试可用】
Nov 08 Javascript
通过命令行创建vue项目的方法
Jul 20 Javascript
jquery实现限制textarea输入字数的方法
Sep 06 jQuery
vuejs实现本地数据的筛选分页功能思路详解
Nov 15 Javascript
JS中的BOM应用
Feb 02 Javascript
微信小程序中换行空格(多个空格)写法详解
Jul 10 Javascript
200行HTML+JavaScript实现年会抽奖程序
Jan 22 Javascript
JS实现拖拽元素时与另一元素碰撞检测
Aug 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
将数字格式的计算结果转为汉字格式
2006/10/09 PHP
PHP 图片水印类代码
2012/08/27 PHP
编译PHP报错configure error Cannot find libmysqlclient under usr的解决方法
2014/06/27 PHP
Zend Framework实现留言本分页功能(附demo源码下载)
2016/03/22 PHP
php+mysql+ajax实现单表多字段多关键词查询的方法
2017/04/15 PHP
PHPExcel 修改已存在Excel的方法
2018/05/03 PHP
确保Laravel网站不会被嵌入到其他站点中的方法
2019/10/18 PHP
PHP如何获取Cookie并实现模拟登录
2020/07/16 PHP
PHP大文件及断点续传下载实现代码
2020/08/18 PHP
JavaScript入门教程(3) js面向对象
2009/01/31 Javascript
javascript 表格排序和表头浮动效果(扩展SortTable)
2009/04/07 Javascript
Javascript Function对象扩展之延时执行函数
2010/07/06 Javascript
jQuery实现新消息闪烁标题提示的方法
2015/03/11 Javascript
javascript判断并获取注册表中可信任站点的方法
2015/06/01 Javascript
浅析JS运动
2015/12/28 Javascript
原生js和jquery分别实现横向导航菜单效果
2016/05/13 Javascript
轻松理解JavaScript闭包
2017/03/14 Javascript
Vue.js实战之Vuex的入门教程
2017/04/01 Javascript
Vue组件实例间的直接访问实现代码
2017/08/20 Javascript
vue.js实现标签页切换效果
2018/06/07 Javascript
Vue高版本中一些新特性的使用详解
2018/09/25 Javascript
微信小程序的线程架构【推荐】
2019/05/14 Javascript
Vue 刷新当前路由的实现代码
2019/09/26 Javascript
17个Python小技巧分享
2015/01/23 Python
Python单链表简单实现代码
2016/04/27 Python
简单谈谈python中的语句和语法
2017/08/10 Python
python bmp转换为jpg 并删除原图的方法
2018/10/25 Python
使用PyQtGraph绘制精美的股票行情K线图的示例代码
2019/03/14 Python
PyPDF2读取PDF文件内容保存到本地TXT实例
2020/05/12 Python
基于Python脚本实现邮件报警功能
2020/05/20 Python
python boto和boto3操作bucket的示例
2020/10/30 Python
美国知名的百货清仓店:Neiman Marcus Last Call
2016/08/03 全球购物
生物化工工艺专业应届生求职信
2013/10/08 职场文书
幼儿园六一活动总结
2014/08/27 职场文书
国家税务局领导班子对照检查材料思想汇报
2014/10/04 职场文书
25句企业管理语录:助你迅速打开思路,句句经典!
2020/01/14 职场文书