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 相关文章推荐
一个没有MYSQL数据库支持的简易留言本的编写
Oct 09 PHP
php 用sock技术发送邮件的函数
Jul 21 PHP
php更改目录及子目录下所有的文件后缀扩展名的代码
Oct 12 PHP
PHP的curl实现get,post和cookie(实例介绍)
Jun 17 PHP
PHP_NETWORK_GETADDRESSES: GETADDRINFO FAILED问题解决办法
May 04 PHP
php+mysql删除指定编号员工信息的方法
Jan 14 PHP
将FCKeditor导入PHP+SMARTY的实现方法
Jan 15 PHP
Windows7下的php环境配置教程
Feb 28 PHP
php判断邮箱地址是否存在的方法
Feb 13 PHP
php设计模式之委托模式
Feb 13 PHP
PHPExcel中文帮助手册|PHPExcel使用方法(分享)
Jun 09 PHP
windows下的WAMP环境搭建图文教程(推荐)
Jul 27 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
一个简单的自动发送邮件系统(三)
2006/10/09 PHP
NOT NULL 和NULL
2007/01/15 PHP
WordPress中创建用户角色的相关PHP函数使用详解
2015/12/25 PHP
Smarty简单生成表单元素的方法示例
2016/05/23 PHP
php nginx 实时输出的简单实现方法
2018/01/21 PHP
PPK 谈 JavaScript 的 this 关键字 [翻译]
2009/09/29 Javascript
ExtJS Window 最小化的一种方法
2009/11/18 Javascript
javascript之学会吝啬 精简代码
2010/04/25 Javascript
Node.js和PHP根据ip获取地理位置的方法
2014/03/14 Javascript
jQuery弹出框代码封装DialogHelper
2015/01/30 Javascript
jQuery EasyUI ProgressBar进度条组件
2017/02/28 Javascript
AngularJS的ng-click传参的方法
2017/06/19 Javascript
使用vue与jquery实时监听用户输入状态的操作代码
2017/09/19 jQuery
r.js来合并压缩css文件的示例
2018/04/26 Javascript
纯javascript前端实现base64图片下载(兼容IE10+)
2018/09/14 Javascript
JavaScript实现猜数字游戏
2020/05/20 Javascript
基于canvas实现手写签名(vue)
2020/05/21 Javascript
vue props 一次传多个值实例
2020/07/22 Javascript
Python中str is not callable问题详解及解决办法
2017/02/10 Python
Django实现全文检索的方法(支持中文)
2018/05/14 Python
python中的json总结
2018/10/11 Python
Python实现一个带权无回置随机抽选函数的方法
2019/07/24 Python
Python中的引用和拷贝实例解析
2019/11/14 Python
tensorflow实现打印ckpt模型保存下的变量名称及变量值
2020/01/04 Python
Python判断字符串是否为空和null方法实例
2020/04/26 Python
HTML5: Web 标准最巨大的飞跃
2008/10/17 HTML / CSS
美国体育用品商店:Paragon Sports
2017/10/08 全球购物
Space NK英国站:英国热门美妆网站
2017/12/11 全球购物
电气工程师岗位职责
2014/01/01 职场文书
村干部任职承诺书
2015/01/21 职场文书
毕业生个人总结
2015/02/28 职场文书
社区节水倡议书
2015/04/29 职场文书
2016年七夕情人节宣传语
2015/11/25 职场文书
导游词之峨眉山
2019/12/16 职场文书
Vue.js中v-for指令的用法介绍
2022/03/13 Vue.js
Python实现猜拳与猜数字游戏的方法详解
2022/04/06 Python