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 相关文章推荐
wordpress之wp-settings.php
Aug 17 PHP
PHP读取MySQL数据代码
Jun 05 PHP
php 遍历显示文件夹下所有目录、所有文件的函数,没有分页的代码
Nov 14 PHP
php eval函数用法总结
Oct 31 PHP
解析PHP跨站刷票的实现代码
Jun 18 PHP
php过滤所有恶意字符(批量过滤post,get敏感数据)
Mar 18 PHP
destoon在360浏览器下出现用户被强行注销的解决方法
Jun 26 PHP
set_exception_handler函数在ThinkPHP中的用法
Oct 31 PHP
PHP图片处理之图片背景、画布操作
Nov 19 PHP
smarty内置函数foreach用法实例
Jan 22 PHP
kindeditor 加入七牛云上传的实例讲解
Nov 12 PHP
如何使用php生成zip压缩包
Apr 21 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编码规范-php coding standard
2007/03/16 PHP
详解php 使用Callable Closure强制指定回调类型
2017/10/26 PHP
PHP预定义超全局数组变量小结
2018/08/20 PHP
JS分割字符串并放入数组的函数
2011/07/04 Javascript
javascript window.open打开新窗口后无法再次打开该窗口问题的解决方法
2014/04/12 Javascript
用Node.js通过sitemap.xml批量抓取美女图片
2015/05/28 Javascript
JS去除空格和换行的正则表达式(推荐)
2016/06/14 Javascript
javascript中递归的两种写法
2017/01/17 Javascript
JavaScript评论点赞功能的实现方法
2017/03/13 Javascript
微信小程序之分享页面如何返回首页的示例
2018/03/28 Javascript
JavaScript私有变量实例详解
2019/01/24 Javascript
Layui实现数据表格默认全部显示(不要分页)
2019/10/26 Javascript
如何基于javascript实现贪吃蛇游戏
2020/02/09 Javascript
python构造icmp echo请求和实现网络探测器功能代码分享
2014/01/10 Python
Python2.x中str与unicode相关问题的解决方法
2015/03/30 Python
Python实现队列的方法
2015/05/26 Python
python实现字典(dict)和字符串(string)的相互转换方法
2017/03/01 Python
Python贪吃蛇游戏编写代码
2020/10/26 Python
pygame 精灵的行走及二段跳的实现方法(必看篇)
2017/07/10 Python
python爬虫之BeautifulSoup 使用select方法详解
2017/10/23 Python
Python基于列表模拟堆栈和队列功能示例
2018/01/05 Python
Python异常对代码运行性能的影响实例解析
2018/02/08 Python
pygame游戏之旅 添加icon和bgm音效的方法
2018/11/21 Python
Python实现统计英文文章词频的方法分析
2019/01/28 Python
使用Python实现跳帧截取视频帧
2019/05/31 Python
Python3.7+tkinter实现查询界面功能
2019/12/24 Python
Python自动采集微信联系人的实现示例
2020/02/28 Python
python程序输出无内容的解决方式
2020/04/09 Python
最好的商品表达自己:Cafepress
2019/09/04 全球购物
财务担保书范文
2014/04/02 职场文书
供用电专业求职信
2014/07/07 职场文书
行政申诉状范文
2015/05/20 职场文书
领导莅临指导欢迎词
2015/09/30 职场文书
2016年优秀党员教师先进事迹材料
2016/02/29 职场文书
Python 中 Shutil 模块详情
2021/11/11 Python
解决 redis 无法远程连接
2022/05/15 Redis