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 相关文章推荐
JS 拼图游戏 面向对象,注释完整。
Jun 18 Javascript
工作需要写的一个js拖拽组件
Jul 28 Javascript
js限制文本框的输入内容代码分享(3类)
Aug 20 Javascript
JavaScript判断DIV内容是否为空的方法
Jan 29 Javascript
Angular表单验证实例详解
Oct 20 Javascript
BootStrap 弹出层代码
Feb 09 Javascript
JavaScript观察者模式(publish/subscribe)原理与实现方法
Mar 30 Javascript
JS+Ajax实现百度智能搜索框
Aug 04 Javascript
微信小程序表单验证插件WxValidate的二次封装功能(终极版)
Sep 03 Javascript
原生javascript制作的拼图游戏实现方法详解
Feb 23 Javascript
利用React高阶组件实现一个面包屑导航的示例
Aug 23 Javascript
什么是SOLID
Mar 24 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过滤危险html代码的函数
2008/07/22 PHP
php的hash算法介绍
2014/02/13 PHP
php像数组一样存取和修改字符串字符
2014/03/21 PHP
laravel框架创建授权策略实例分析
2019/11/22 PHP
在视频前插入广告
2006/11/20 Javascript
input 输入框内的输入事件详细分析
2010/03/17 Javascript
JS获取URL中参数值(QueryString)的4种方法分享
2014/04/12 Javascript
JavaScript常用的返回,自动跳转,刷新,关闭语句汇总
2015/01/13 Javascript
深入探寻seajs的模块化与加载方式
2015/04/14 Javascript
Angular学习笔记之angular的$filter服务浅析
2016/11/12 Javascript
JavaScript字符串对象(string)基本用法示例
2017/01/18 Javascript
jQuery实现字符串全部替换的方法【推荐】
2017/03/09 Javascript
JavaScript瀑布流布局实现代码
2017/05/06 Javascript
Javascript中prototype与__proto__的关系详解
2018/03/11 Javascript
webpack4 入门最简单的例子介绍
2018/09/05 Javascript
javascrit中undefined和null的区别详解
2019/04/07 Javascript
python实现异步回调机制代码分享
2014/01/10 Python
Python守护进程和脚本单例运行详解
2017/01/06 Python
Python 对象中的数据类型
2017/05/13 Python
python leetcode 字符串相乘实例详解
2018/09/03 Python
Python实现网页截图(PyQT5)过程解析
2019/08/12 Python
Anaconda之conda常用命令介绍(安装、更新、删除)
2019/10/06 Python
python实现简单图书管理系统
2019/11/22 Python
Python object类中的特殊方法代码讲解
2020/03/06 Python
python try...finally...的实现方法
2020/11/25 Python
python制作抽奖程序代码详解
2021/01/15 Python
css3 transform 3d 使用css3创建动态3d立方体(html5实践)
2013/01/06 HTML / CSS
如何开启linux的ssh服务
2013/06/03 面试题
医药营销专业个人自荐信
2013/09/29 职场文书
毕业生个人求职信范文分享
2014/01/05 职场文书
入党思想汇报
2014/01/05 职场文书
县委党的群众路线教育实践活动工作情况报告
2014/10/25 职场文书
社区安全温馨提示语
2015/07/14 职场文书
运动会800米赞词
2015/07/22 职场文书
在校大学生才艺比赛策划书怎么写?
2019/08/26 职场文书
Python趣味挑战之教你用pygame画进度条
2021/05/31 Python