PHP实现记录代码运行时间封装类实例教程

 更新时间:2017年05月08日 11:36:49   作者:Furion  
这篇文章主要给大家介绍了利用PHP实现记录代码运行时间的封装类的相关教程,文中给出了详细的示例代码供大家参考学习,需要的朋友可以参考下

前言

本文介绍的是利用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 数据结构之集合创建(2)

    JavaScript 数据结构之集合创建(2)

    这篇文章主要介绍了JavaScript 数据结构之集合创建,上一篇我们介绍了什么是集合,并且手动实现了一个集合的类,本篇基于上篇内容继续深入介绍需要的小伙伴可以参考一下
    2022-04-04
  • JS Array.from()将伪数组转换成数组的方法示例

    JS Array.from()将伪数组转换成数组的方法示例

    这篇文章主要介绍了JS Array.from()将伪数组转换成数组的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • 小程序自定义日历效果

    小程序自定义日历效果

    这篇文章主要为大家详细介绍了小程序自定义日历效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12
  • 解析offsetHeight,clientHeight,scrollHeight之间的区别

    解析offsetHeight,clientHeight,scrollHeight之间的区别

    这篇文章主要是对offsetHeight,clientHeight,scrollHeight之间的区别进行了详细介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2013-11-11
  • Ionic 2 实现列表滑动删除按钮的方法

    Ionic 2 实现列表滑动删除按钮的方法

    这篇教程将展示如何使用Ionic2添加一个简单的删除按钮到列表,当用户滑动列表项到左边的时候。这是一个处理删除列表数据时候常用的模式,具体内容大家通过本文学习吧
    2017-01-01
  • JavaScript实现网页带动画返回顶部的方法详解

    JavaScript实现网页带动画返回顶部的方法详解

    这篇文章主要为大家详细介绍了如何利用JavaScript实现网页带动画返回顶部的效果,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2022-08-08
  • 详解Webpack DLL用法以及功能

    详解Webpack DLL用法以及功能

    本篇文章主要介绍了详解Webpack DLL用法以及功能,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • 小程序实现发表评论功能

    小程序实现发表评论功能

    这篇文章主要为大家详细介绍了小程序实现发表评论功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • js的alert样式如何更改如背景颜色

    js的alert样式如何更改如背景颜色

    如何更改js的alert样式如:弹出对话框时的背景颜色、背景透明等等,下面有效果图,感兴趣的朋友可以学习下
    2014-01-01
  • JavaScript生成福利彩票双色球号码

    JavaScript生成福利彩票双色球号码

    无聊用javascript写了个随机产生福利彩票双色球7个数字的号码其中红色球不会重复,喜欢的可以下来看看,有意见的可以说说
    2015-05-05

最新评论