前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >详解用 MiniFramework 计算程序运行时间的方法

详解用 MiniFramework 计算程序运行时间的方法

作者头像
魏杰
发布2022-12-23 19:55:05
2880
发布2022-12-23 19:55:05
举报
文章被收录于专栏:魏杰的技术专栏

我们在项目调优过程中,通常会对代码的运行时间进行统计,以便了解程序运行的性能和效率,这些统计结果将作为代码优化时的重要指标,帮助开发者有针对性的进行调优工作。

MiniFramework 在 1.3.0 版本中,新增了 Debug 类,其中包含有时间统计功能的若干方法,可以非常便捷地帮助开发者实现上述统计需求,下面我们来通过示例代码介绍具体实现方法。

首先,假设我们有一个名为 Index 的 Controller,并且其中包含有一个名为 index 的 Action(MiniFramework下载包中已经包含),我们将代码写在这个 Action 中,如下:

代码语言:javascript
复制
<?php
namespace App\Controller;

use Mini\Action;
use Mini\Debug; //用use引入Debug类

class Index extends Action
{
    
    function indexAction()
    {
        // 计时开始
        Debug::timerStart();
        
        sleep(1); //用sleep模拟代码运行1秒钟
        
        // 纪录中间计时点
        Debug::timerPoint();
        
        sleep(1);
        
        // 再次纪录中间计时点
        Debug::timerPoint();
        
        sleep(1);
        
        // 计时结束
        Debug::timerEnd();
        
        // 获取计时统计结果
        // 参数为 true 时,这个方法会调用 dump 将结果直接输出
        Debug::getTimerRecords(true);
        
        die();
    }
}

上述的代码中,首先在顶部通过 use 指令引入 Debug 类,由于 Debug 类是归属于 MiniFramework 框架的,因此引入时要在类名前加上命名空间 Mini。

在 Action 中,我们用到了四个方法,分别为: Debug::timerStart,用于开启计时器 Debug::timerPoint,用于在计时开始和结束之间记录若干个中间计时点 Debug::timerEnd,用于结束当前计时器 Debug::getTimerRecords,用于获得计时结果

在代码中,我们通过 sleep 来模拟代码执行的时间,便于演示计时器的工作过程。

代码保存并运行后,会看到类似下边的结果:

代码语言:javascript
复制
array(2) {
  ["time"] => string(12) "3,002.6779ms"
  ["point"] => array(2) {
    [0] => string(12) "1,000.5419ms"
    [1] => string(12) "2,001.5941ms"
  }
}

上述结果中,time 对应的是本次统计的总时长。point 对应的是中间计时点,值为一个数组,数组中从0开始的每一个元素对应每次调用 Debug::timerPoint 方法时记录的运行时间。

最后,我们注意到调用 Debug::getTimerRecords 方法时,我们传入了一个 true,作用是让这个方法调用 dump 直接输出统计结果。当然,开发者也可以将结果赋值给一个变量,例如:

代码语言:javascript
复制
$timerResult = Debug::getTimerRecords();

MiniFramework 是一款遵循 Apache2 开源协议发布的,支持 MVC 和 RESTful 的超轻量级 PHP 开发框架。旨在帮助开发者用最小的学习成本快速构建 Web 应用,在满足分层开发、数据库和缓存访问等少量功能基础上,做到尽可能精简,助力应用基于框架高效运行。

MiniFramework 的 GitHub 地址:https://github.com/jasonweicn/MiniFramework

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-09-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档