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 相关文章推荐
实现点击列表弹出列表索引的两种方式
Mar 08 Javascript
JavaScript简单表格编辑功能实现方法
Apr 16 Javascript
理解javascript中Map代替循环
Feb 26 Javascript
使用postMesssage()实现跨域iframe页面间的信息传递方法
Mar 29 Javascript
JavaScript的继承实现小结
May 07 Javascript
JS之if语句对接事件动作逻辑(详解)
Jun 28 Javascript
在 Node.js 中使用 async 函数的方法
Nov 17 Javascript
利用ECharts.js画K线图的方法示例
Jan 10 Javascript
layer弹出层自定义提交取消按钮的例子
Sep 10 Javascript
通过微信公众平台获取公众号文章的方法示例
Dec 25 Javascript
javascript中正则表达式语法详解
Aug 07 Javascript
JavaScript编码小技巧分享
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
php流量统计功能的实现代码
2012/09/29 PHP
php读取本地文件常用函数(fopen与file_get_contents)
2013/09/09 PHP
浅谈PHP错误类型及屏蔽方法
2017/05/27 PHP
php-fpm服务启动脚本的方法
2018/04/27 PHP
火狐浏览器(firefox)下获得Event对象以及keyCode
2008/11/13 Javascript
javascript改变position值实现菜单滚动至顶部后固定
2013/01/18 Javascript
Js操作Select大全(取值、设置选中等等)
2013/10/29 Javascript
JQuery实现当鼠标停留在某区域3秒后自动执行
2014/09/09 Javascript
Jquery对象和Dom对象的区别分析
2014/11/20 Javascript
JS根据浏览器窗口大小实时动态改变网页文字大小的方法
2016/02/25 Javascript
Bootstrap进度条组件知识详解
2016/05/01 Javascript
jQuery获取Table某列的值(推荐)
2017/03/03 Javascript
小程序实现带年月选取效果的日历
2018/06/27 Javascript
详解javascript appendChild()的完整功能
2018/08/18 Javascript
jquery实现掷骰子小游戏
2019/10/24 jQuery
Python中的jquery PyQuery库使用小结
2014/05/13 Python
Python写的创建文件夹自定义函数mkdir()
2014/08/25 Python
Python输出9*9乘法表的方法
2015/05/25 Python
python实现基于SVM手写数字识别功能
2020/05/27 Python
深入了解和应用Python 装饰器 @decorator
2019/04/02 Python
Python开发之Nginx+uWSGI+virtualenv多项目部署教程
2019/05/13 Python
Python读取xlsx文件的实现方法
2019/07/04 Python
python 3.74 运行import numpy as np 报错lib\site-packages\numpy\__init__.py
2019/10/06 Python
python tkinter canvas使用实例
2019/11/04 Python
用OpenCV将视频分解成单帧图片,图片合成视频示例
2019/12/10 Python
解决python图像处理图像赋值后变为白色的问题
2020/06/04 Python
html5使用canvas绘制文字特效
2014/12/15 HTML / CSS
Html5 Canvas动画基础碰撞检测的实现
2018/12/06 HTML / CSS
Html5之webcoekt播放JPEG图片流
2020/09/22 HTML / CSS
英国最大的邮寄种子和植物公司:Thompson & Morgan
2017/09/21 全球购物
Perfume’s Club中文官网:西班牙美妆在线零售品牌
2020/08/24 全球购物
党员党性分析材料
2014/02/17 职场文书
给校长的建议书600字
2014/05/15 职场文书
党的群众路线对照检查材料
2014/09/22 职场文书
党员群众路线教育实践活动剖析材料
2014/10/10 职场文书
2016优秀毕业生个人事迹材料
2016/02/29 职场文书