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 相关文章推荐
美图秀秀web开放平台--PHP流式上传和表单上传示例分享
Jun 22 PHP
php操作XML、读取数据和写入数据的实现代码
Aug 15 PHP
php实现获取及设置用户访问页面语言类
Sep 24 PHP
php防止恶意刷新与刷票的方法
Nov 21 PHP
基于linnux+phantomjs实现生成图片格式的网页快照
Apr 15 PHP
利用PHP命令行模式采集股票趋势信息
Aug 09 PHP
yii2利用自带UploadedFile实现上传图片的示例
Feb 16 PHP
PHP实现简单的模板引擎功能示例
Sep 02 PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
Nov 10 PHP
PHP 结合 Boostrap 结合 js 实现学生列表删除编辑及搜索功能
May 21 PHP
深入分析PHP设计模式
Jun 15 PHP
php在linux环境中如何使用redis详解
Dec 15 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 FLEA中二叉树数组的遍历输出
2012/09/26 PHP
PHP动态生成javascript文件的2个例子
2014/04/11 PHP
PHP加密技术的简单实现
2016/09/04 PHP
解决php 处理 form 表单提交多个 name 属性值相同的 input 标签问题
2017/05/11 PHP
利用Dojo和JSON建立无限级AJAX动态加载的功能模块树
2007/03/24 Javascript
JavaScript面向对象编程
2008/03/02 Javascript
input:checkbox多选框实现单选效果跟radio一样
2014/06/16 Javascript
JS 对象属性相关(检查属性、枚举属性等)
2015/04/05 Javascript
javascript模拟C#格式化字符串
2015/08/26 Javascript
JavaScript如何动态创建table表格
2020/08/02 Javascript
在JavaScript中call()与apply()区别
2016/01/22 Javascript
Vue进度条progressbar组件功能
2018/04/17 Javascript
微信小程序实现留言板
2018/10/31 Javascript
微信小程序合法域名配置方法
2019/05/06 Javascript
通过实例学习React中事件节流防抖
2019/06/17 Javascript
vue3.0中的双向数据绑定方法及优缺点
2019/08/01 Javascript
vue图片加载失败时用默认图片替换的方法
2019/08/29 Javascript
vue中keep-alive、activated的探讨和使用详解
2020/07/26 Javascript
JavaScript 闭包的使用场景
2020/09/17 Javascript
[02:43]DOTA2英雄基础教程 半人马战行者
2014/01/13 DOTA
[46:00]Ti4 冒泡赛第二轮LGD vs C9 2
2014/07/14 DOTA
python之import机制详解
2014/07/03 Python
Python中操作文件之write()方法的使用教程
2015/05/25 Python
Python字符编码与函数的基本使用方法
2017/09/30 Python
Ubuntu下使用python读取doc和docx文档的内容方法
2018/05/08 Python
python matplotlib.pyplot.plot()参数用法
2020/04/14 Python
Python文件夹批处理操作代码实例
2020/07/21 Python
Python实现爬取网页中动态加载的数据
2020/08/17 Python
Selenium+BeautifulSoup+json获取Script标签内的json数据
2020/12/07 Python
商场活动策划方案
2014/01/24 职场文书
成龙洗发水广告词
2014/03/14 职场文书
安全协议书范本
2014/04/21 职场文书
检讨书范文2000字
2015/01/28 职场文书
学校工会工作总结2015
2015/05/19 职场文书
2016同学毕业寄语大全
2015/12/04 职场文书
python APScheduler执行定时任务介绍
2022/04/19 Python