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错误提示failed to open stream: HTTP request failed!的完美解决方法
Jun 06 PHP
6种php上传图片重命名的方法实例
Nov 04 PHP
PHP使用Face++接口开发微信公众平台人脸识别系统的方法
Apr 17 PHP
php实现根据IP地址获取其所在省市的方法
Apr 30 PHP
php 参数过滤、数据过滤详解
Oct 26 PHP
yii权限控制的方法(三种方法)
Dec 28 PHP
PHP上传图片时判断上传文件是否为可用图片的方法
Oct 20 PHP
PHP strcmp()和strcasecmp()的区别实例
Nov 05 PHP
PHP jQuery+Ajax结合写批量删除功能
May 19 PHP
PHP+redis实现的悲观锁机制示例
Jun 12 PHP
PHP实现的AES双向加密解密功能示例【128位】
Sep 03 PHP
YII2框架中查询生成器Query()的使用方法示例
Mar 18 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中使用session_set_save_handler()函数把session保存到MySQL数据库实例
2014/11/06 PHP
PHP下载生成的csv文件及问题总结
2015/08/06 PHP
示例详解Laravel的注册重构
2016/08/14 PHP
Zend Framework入门教程之Zend_View组件用法示例
2016/12/09 PHP
PHP字符串逆序排列实现方法小结【strrev函数,二分法,循环法,递归法】
2017/01/13 PHP
jQuery 类twitter的文本字数限制带提示效果插件
2010/04/16 Javascript
jquery 关键字“拖曳搜索”之“拖曳”以及 图片“提示自适应放大”效果 的实现
2010/04/18 Javascript
JQuery魔力之$(&quot;tagName&quot;)与selector
2012/03/05 Javascript
用正则表达式替换图片地址img标签
2013/11/22 Javascript
JS实现一个按钮的方法
2015/02/05 Javascript
JavaScript的类型、值和变量小结
2015/07/09 Javascript
基于d3.js实现实时刷新的折线图
2016/08/03 Javascript
基于Vue如何封装分页组件
2016/12/16 Javascript
详解如何使用Node.js编写命令工具——以vue-cli为例
2017/06/29 Javascript
inner join 内联与left join 左联的实例代码
2017/09/18 Javascript
基于JavaScript实现简单的音频播放功能
2018/01/07 Javascript
JS实现集合的交集、补集、差集、去重运算示例【ES5与ES6写法】
2019/02/18 Javascript
js消除图片小游戏代码
2019/12/11 Javascript
vue使用微信扫一扫功能的实现代码
2020/04/11 Javascript
jQuery使用jsonp实现百度搜索的示例代码
2020/07/08 jQuery
原生js实现弹幕效果
2020/11/29 Javascript
使用Turtle画正螺旋线的方法
2017/09/22 Python
Python+Pandas 获取数据库并加入DataFrame的实例
2018/07/25 Python
利用pandas读取中文数据集的方法
2018/07/25 Python
Python字典的基本用法实例分析【创建、增加、获取、修改、删除】
2019/03/05 Python
Python shutil模块用法实例分析
2019/10/02 Python
Python操作redis和mongoDB的方法
2019/12/19 Python
python在协程中增加任务实例操作
2021/02/28 Python
校园网站的创业计划书范文
2013/12/30 职场文书
护士在校生自荐信
2014/02/01 职场文书
报纸媒体创意广告词
2014/03/17 职场文书
解除施工合同协议书
2014/10/17 职场文书
暑期社会实践证明书
2014/11/17 职场文书
2014年仓管员工作总结
2014/11/18 职场文书
2016年公务员六五普法心得体会
2016/01/21 职场文书
详解Python生成器和基于生成器的协程
2021/06/03 Python