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 事件冒泡简介及应用
Jan 11 Javascript
JavaScript中关于indexOf的使用方法与问题小结
Aug 05 Javascript
javascript中match函数的用法小结
Feb 08 Javascript
jquery实现增加删除行的方法
Feb 03 Javascript
Jquery实现textarea根据文本内容自适应高度
Apr 03 Javascript
jquery中$each()方法的使用指南
Apr 30 Javascript
详解原生js实现offset方法
Jun 15 Javascript
详解angular 中的自定义指令之详解API
Jun 20 Javascript
vue 通过下拉框组件学习vue中的父子通讯
Dec 19 Javascript
详细教你微信公众号正文页SVG交互开发技巧
Jul 25 Javascript
使用js原生实现年份轮播选择效果实例
Jan 12 Javascript
angular4实现带搜索的下拉框
Mar 25 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执行速率优化技巧小结
2008/03/15 PHP
PHP运行出现Notice : Use of undefined constant 的完美解决方案分享
2012/03/05 PHP
PHP-Fcgi下PHP的执行时间设置方法
2013/08/02 PHP
php模式设计之观察者模式应用实例分析
2019/09/25 PHP
juqery 学习之四 筛选查找
2010/11/30 Javascript
jquery对ajax的支持介绍
2013/12/10 Javascript
JavaScript 基本概念
2015/01/20 Javascript
JavaScript实现获取dom中class的方法
2015/02/09 Javascript
浅析四种常见的Javascript声明循环变量的书写方式
2015/10/14 Javascript
JS实现列表页面隔行变色效果
2017/03/25 Javascript
JavaScript实现获取远程的html到当前页面中
2017/03/26 Javascript
Bootstrap Table使用整理(四)之工具栏
2017/06/09 Javascript
JavaScript使用FileReader实现图片上传预览效果
2020/03/27 Javascript
详解javascript对数组和json数组的操作
2019/04/15 Javascript
一篇文章,教你学会Vue CLI 插件开发
2019/04/17 Javascript
vue中使用 pako.js 解密 gzip加密字符串的方法
2019/06/10 Javascript
vue实现PC端分辨率适配操作
2020/08/03 Javascript
[00:47]DOTA2荣耀之路6:天火,天火!
2018/05/30 DOTA
Scrapy爬虫实例讲解_校花网
2017/10/23 Python
Python3.5实现的三级菜单功能示例
2019/03/25 Python
Python面向对象总结及类与正则表达式详解
2019/04/18 Python
Python3网络爬虫中的requests高级用法详解
2019/06/18 Python
Python正则re模块使用步骤及原理解析
2020/08/18 Python
Python self用法详解
2020/11/28 Python
CSS3制作缩略图的详细过程
2016/07/08 HTML / CSS
html5使用canvas压缩图片的示例代码
2018/09/11 HTML / CSS
Expedia丹麦:全球领先的旅游网站
2018/03/18 全球购物
英国办公用品商店:Office Outlet
2018/04/04 全球购物
请写一个C函数,若处理器是Big_endian的,则返回0;若是Little_endian的,则返回1
2015/07/16 面试题
财产保全担保书范文
2014/04/01 职场文书
2015年元旦活动总结
2014/05/09 职场文书
建筑工地大门标语
2014/06/18 职场文书
孝女彩金观后感
2015/06/10 职场文书
2016年国培心得体会及反思
2016/01/13 职场文书
导游词之介休绵山
2019/12/31 职场文书
JVM的类加载器和双亲委派模式你了解吗
2022/03/13 Java/Android