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 相关文章推荐
如何限制访问者的ip(PHPBB的代码)
Oct 09 PHP
php垃圾代码优化操作代码
Aug 05 PHP
使用ThinkPHP自带的Http类下载远程图片到本地的实现代码
Aug 02 PHP
PHP APC的安装与使用详解
Jun 13 PHP
函数中使用require_once问题深入探讨 优雅的配置文件定义方法推荐
Jul 02 PHP
php实现的zip文件内容比较类
Sep 24 PHP
php根据一个给定范围和步进生成数组的方法
Jun 19 PHP
PHP实现简单汉字验证码
Jul 28 PHP
YII2.0之Activeform表单组件用法实例
Jan 09 PHP
php版阿里云OSS图片上传类详解
Dec 01 PHP
php 判断IP为有效IP地址的方法
Jan 28 PHP
Laravel登录失败次数限制的实现方法
Aug 26 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
PHP与SQL注入攻击[三]
2007/04/17 PHP
ThinkPHP入库出现两次反斜线转义及数据库类转义的解决方法
2014/11/04 PHP
php smtp实现发送邮件功能
2017/06/22 PHP
使用PHPStorm+XDebug搭建单步调试环境
2017/11/19 PHP
记Laravel调用Gin接口调用formData上传文件的实现方法
2019/12/12 PHP
推荐30个新鲜出炉的精美 jQuery 效果
2012/03/26 Javascript
JavaScript 处理Iframe自适应高度(同或不同域名下)
2013/03/29 Javascript
jQuery$命名冲突怎么办如何解决
2014/01/16 Javascript
IE下使用jQuery重置iframe地址时内存泄露问题解决办法
2015/02/05 Javascript
javascript实现youku的视频代码自适应宽度
2015/05/25 Javascript
基于Bootstrap重置输入框内容按钮插件
2016/05/12 Javascript
jQuery插件编写步骤详解
2016/06/03 Javascript
js删除数组元素、清空数组的简单方法(必看)
2016/07/27 Javascript
JS打印组合功能
2016/08/04 Javascript
js实现界面向原生界面发消息并跳转功能
2016/11/22 Javascript
Node批量爬取头条视频并保存方法
2018/09/20 Javascript
详解Vue.js在页面加载时执行某个方法
2018/11/20 Javascript
发布一款npm包帮助理解npm的使用
2019/01/03 Javascript
原生js canvas实现鼠标跟随效果
2020/08/02 Javascript
js实现头像上传并且可预览提交
2020/12/25 Javascript
Python判断操作系统类型代码分享
2014/11/22 Python
Python下载懒人图库JavaScript特效
2015/05/28 Python
Python通过Pygame绘制移动的矩形实例代码
2018/01/03 Python
Flask框架各种常见装饰器示例
2018/07/17 Python
python Django编写接口并用Jmeter测试的方法
2019/07/31 Python
基于python3生成标签云代码解析
2020/02/18 Python
Python Tornado批量上传图片并显示功能
2020/03/26 Python
Django设置Postgresql的操作
2020/05/14 Python
使用css3和jquery实现可伸缩搜索框
2014/02/12 HTML / CSS
Myprotein加拿大官网:欧洲第一的运动营养品牌
2018/01/06 全球购物
大龄毕业生求职别忘职业规划
2014/03/11 职场文书
法院先进个人事迹材料
2014/05/04 职场文书
导师就业推荐信范文
2014/05/22 职场文书
如何利用python和DOS获取wifi密码
2021/03/31 Python
解决pycharm安装scrapy DLL load failed:找不到指定的程序的问题
2021/06/08 Python
vue3获取当前路由地址
2022/02/18 Vue.js