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

发布时间 - 2026-01-11 01:01:36    点击率:

前言

本文介绍的是利用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中的所有结果拼接返回。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。


# php  # 代码运行时间  # php代码运行  # 记录程序运行时间  # php代码运行时间查看类代码分享  # php中计算程序运行时间的类代码  # 的是  # 相关内容  # 更高  # 给大家  # 来看看  # 写了  # 这篇文章  # 每次都  # 谢谢大家  # 会将  # 会以  # 留了  # 要写  # 组中  # 是为了  # 麻烦了  # 有疑问  # 足够了  # TimeCost  # private 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 网站制作报价单模板图片,小松挖机官方网站报价?  北京网站制作的公司有哪些,北京白云观官方网站?  专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?  如何在腾讯云服务器上快速搭建个人网站?  创业网站制作流程,创业网站可靠吗?  奇安信“盘古石”团队突破 iOS 26.1 提权  高性能网站服务器部署指南:稳定运行与安全配置优化方案  活动邀请函制作网站有哪些,活动邀请函文案?  Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】  Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】  软银砸40亿美元收购DigitalBridge 强化AI资料中心布局  Python函数文档自动校验_规范解析【教程】  Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  Laravel怎么实现验证码(Captcha)功能  如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?  香港服务器如何优化才能显著提升网站加载速度?  微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】  Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载  Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧  php静态变量怎么调试_php静态变量作用域调试技巧【解答】  Laravel怎么为数据库表字段添加索引以优化查询  Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程  如何快速生成专业多端适配建站电话?  如何在建站宝盒中设置产品搜索功能?  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?  Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】  如何快速选择适合个人网站的云服务器配置?  php 三元运算符实例详细介绍  Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南  Laravel如何实现数据导出到PDF_Laravel使用snappy生成网页快照PDF【方案】  详解Android——蓝牙技术 带你实现终端间数据传输  文字头像制作网站推荐软件,醒图能自动配文字吗?  如何用5美元大硬盘VPS安全高效搭建个人网站?  PHP正则匹配日期和时间(时间戳转换)的实例代码  如何实现javascript表单验证_正则表达式有哪些实用技巧  html文件怎么打开证书错误_https协议的html打开提示不安全【指南】  为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】  Laravel如何实现多表关联模型定义_Laravel多对多关系及中间表数据存取【方法】  Laravel如何配置中间件Middleware_Laravel自定义中间件拦截请求与权限校验【步骤】  如何快速生成可下载的建站源码工具?  在Oracle关闭情况下如何修改spfile的参数  Laravel如何理解并使用服务容器(Service Container)_Laravel依赖注入与容器绑定说明  Laravel如何实现密码重置功能_Laravel密码找回与重置流程  如何获取免费开源的自助建站系统源码?  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  nginx修改上传文件大小限制的方法