php获取目标函数执行时间示例


Posted in PHP onMarch 04, 2014

写了一个类用来测试目标函数的执行时间。以下是类的定义代码:

<?php
/**
 * class EfficiencyTester
 * 效率测试器,测试函数的运行时间
 * @version 1.0 2013.04.13
 * @author Kross
 */
class EfficiencyTester {    
    /**
     * var $testTimes
     * 测试的次数 
     */
    private $testTimes = 1000;
    /**
     * function getTime()
     * 根据时间模式,获取时间戳
     * @param $timeModel 时间模式,默认:微秒
     * @return int 时间戳
     */
    private function getTime($timeModel = 'MS') {
        if ($timeModel == 'MS') {
            return microtime();
        } else if ($timeModel == 'S') {
            return time();
        } else {
            return microtime();
        }
    }
    /**
     * function testOnce()
     * 测试目标函数一次,返回运行时间
     * @param $functionName 目标函数名
     * @param $timeModel 时间模式,默认:微秒
     * @return double 目标函数运行一次的时间(很随机)
     */
    public function testOnce($functionName, $timeModel = 'MS') {        
        $startMicroTime = $this->getTime($timeModel);
        $functionName();
        $endMicroTime = $this->getTime($timeModel);
        $costMicroTime = $endMicroTime - $startMicroTime;
        return $costMicroTime;
    }
    /**
    * function test()
    * 测试目标函数多次,返回运行时间(平均值)
    * @param $functionName 目标函数名
    * @param $timeModel 时间模式,默认:微秒
    * @return double 目标函数运行的时间
    */
    public function test($functionName, $timeModel = 'MS') {
        $totalMicroTimes = 0;
        for ($i = 1; $i <= $this->testTimes; $i++) {
            $totalMicroTimes += $this->testOnce($functionName);
        }
        return $totalMicroTimes / $this->testTimes;
    }
}
?>

以下是类的测试代码:

<?php
require_once('../class/EfficiencyTester.class.php');
$e = new EfficiencyTester();
echo $e->test('rand');
?>

一开始我是直接使用 microtime() 获取时间的,后来考虑到如果想获得单位是秒的运行时间,这样写就不够多态了,然后我就写了一个getTime() 的函数来获取不同单位的时间戳,不过这样,貌似目标函数的运行时间变长了,可能是因为 getTime() 函数中的判断占用了一部分时间。

PHP 相关文章推荐
新版PHP将向Java靠拢
Oct 09 PHP
php异常处理技术,顶级异常处理器
Jun 13 PHP
跟我学Laravel之请求与输入
Oct 15 PHP
smarty中英文多编码字符截取乱码问题解决方法
Oct 28 PHP
php抽奖概率算法(刮刮卡,大转盘)
Apr 17 PHP
PHP+mysql实现从数据库获取下拉树功能示例
Jan 06 PHP
给大家分享几个常用的PHP函数
Jan 15 PHP
visual studio code 调试php方法(图文详解)
Sep 15 PHP
php代码调试利器firephp安装与使用方法分析
Aug 21 PHP
Yii框架getter与setter方法功能与用法分析
Oct 22 PHP
php设计模式之策略模式实例分析【星际争霸游戏案例】
Mar 26 PHP
PHP ob缓存以及ob函数原理实例解析
Nov 13 PHP
PHP代码优化的53个细节
Mar 03 #PHP
php 表单提交大量数据发生丢失的解决方法
Mar 03 #PHP
PHP根据IP判断地区名信息的示例代码
Mar 03 #PHP
使用php清除bom示例
Mar 03 #PHP
设置php页面编码的两种方法示例介绍
Mar 03 #PHP
php ci框架中加载css和js文件失败的解决方法
Mar 03 #PHP
php switch语句多个值匹配同一代码块的实现
Mar 03 #PHP
You might like
ajax+php控制所有后台函数调用
2015/07/15 PHP
微信公众平台开发教程①获取用户Openid及个人信息图文详解
2019/04/10 PHP
laravel 解决Eloquent ORM的save方法无法插入数据的问题
2019/10/21 PHP
jquery中的 $(&quot;#jb51&quot;)与document.getElementById(&quot;jb51&quot;) 的区别
2011/07/26 Javascript
AngularJS ng-change 指令的详解及简单实例
2016/07/30 Javascript
微信小程序 开发之全局配置
2017/05/05 Javascript
JS实现仿饿了么在浏览器标签页失去焦点时网页Title改变
2017/06/01 Javascript
JS按条件 serialize() 对应标签的使用方法
2017/07/24 Javascript
JavaScript设计模式之工厂模式和抽象工厂模式定义与用法分析
2018/07/26 Javascript
详解bootstrap-fileinput文件上传控件的亲身实践
2019/03/21 Javascript
vue-cli webpack配置文件分析
2019/05/20 Javascript
微信小程序表单验证插件WxValidate的二次封装功能(终极版)
2019/09/03 Javascript
layui输入框中只允许输入整数的实现方法
2019/09/18 Javascript
JavaScript 自定义html元素鼠标右键菜单功能
2019/12/02 Javascript
vue vantUI tab切换时 list组件不触发load事件的问题及解决方法
2020/02/14 Javascript
node.js使用net模块创建服务器和客户端示例【基于TCP协议】
2020/02/14 Javascript
vite2.0+vue3移动端项目实战详解
2021/03/03 Vue.js
[14:24]Optic Gaming vs PSG LGD BO3
2018/06/07 DOTA
Python实现去除代码前行号的方法
2015/03/10 Python
编写Python脚本把sqlAlchemy对象转换成dict的教程
2015/05/29 Python
python pyheatmap包绘制热力图
2018/11/09 Python
Python自定义一个类实现字典dict功能的方法
2019/01/19 Python
python程序需要编译吗
2020/06/19 Python
利用CSS3实现动态的二级三级菜单效果实例源码
2017/01/04 HTML / CSS
仓库管理专业个人自我评价范文
2013/11/11 职场文书
数控专业推荐信范文
2013/12/02 职场文书
大学生实习自我鉴定
2013/12/11 职场文书
国贸专业大学生职业生涯规划范文
2014/01/10 职场文书
大学优秀班主任事迹材料
2014/05/02 职场文书
会计电算化专业求职信
2014/06/10 职场文书
2015年幼儿园大班工作总结
2015/04/25 职场文书
2015年小学二年级班主任工作总结
2015/05/21 职场文书
歌咏比赛主持词
2015/06/29 职场文书
导游词之张家口
2019/12/13 职场文书
教你用Python matplotlib库制作简单的动画
2021/06/11 Python
nginx结合openssl实现https的方法
2021/07/25 Servers