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

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

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

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

<?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 来模拟代码执行的时间,便于演示计时器的工作过程。

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

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 直接输出统计结果。当然,开发者也可以将结果赋值给一个变量,例如:

$timerResult = Debug::getTimerRecords();

 

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

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

联系作者

信箱:jasonwei06@hotmail.com

博客:http://www.sunbloger.com

微博:https://weibo.com/jasonweicn

阳光部落原创,更多内容请访问http://www.sunbloger.com/

 

 

相关内容:

发表评论