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 小乘法表实现代码
Jul 16 PHP
Joomla下利用configuration.php存储简单数据
May 19 PHP
组合算法的PHP解答方法
Feb 04 PHP
解析左右值无限分类的实现算法
Jun 20 PHP
php缩小png图片不损失透明色的解决方法
Dec 25 PHP
windows下配置php5.5开发环境及开发扩展
Dec 25 PHP
php获取YouTube视频信息的方法
Feb 11 PHP
php中有关合并某一字段键值相同的数组合并的改进
Mar 10 PHP
php curl请求信息和返回信息设置代码实例
Apr 27 PHP
Yii核心验证器api详解
Nov 23 PHP
通过实例解析PHP数据类型转换方法
Jul 11 PHP
PHP7 标准库修改
Mar 09 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
一些操作和快捷键的理解和讨论
2020/03/04 星际争霸
社区(php&amp;&amp;mysql)六
2006/10/09 PHP
在PHP3中实现SESSION的功能(三)
2006/10/09 PHP
鸡肋的PHP单例模式应用详解
2013/06/03 PHP
php 读取文件头判断文件类型的实现代码
2013/08/05 PHP
基于prototype的validation.js发布2.3.4新版本,让你彻底脱离表单验证的烦恼
2006/12/06 Javascript
JQuery中html()方法使用不当带来的陷阱
2011/04/07 Javascript
JavaScript里四舍五入函数round用法实例
2015/04/06 Javascript
JavaScript实现网页对象拖放功能的方法
2015/04/15 Javascript
原生JS实现不断变化的标签
2017/05/22 Javascript
JavaScript初学者必看“new”
2017/06/12 Javascript
Vuex利用state保存新闻数据实例
2017/06/28 Javascript
JS中LocalStorage与SessionStorage五种循序渐进的使用方法
2017/07/12 Javascript
es6学习之解构时应该注意的点
2017/08/29 Javascript
vue中使用element-ui进行表单验证的实例代码
2018/06/22 Javascript
微信小程序实现倒计时补零功能
2018/07/09 Javascript
Angular刷新当前页面的实现方法
2018/11/21 Javascript
layer关闭弹出窗口触发表单提交问题的处理方法
2019/09/25 Javascript
vue基于v-charts封装双向条形图的实现代码
2019/12/09 Javascript
如何基于filter实现网站整体变灰功能
2020/04/17 Javascript
webpack安装配置与常见使用过程详解(结合vue)
2020/06/01 Javascript
Python中的MongoDB基本操作:连接、查询实例
2015/02/13 Python
Python3.5 Pandas模块之DataFrame用法实例分析
2019/04/23 Python
详解使用python绘制混淆矩阵(confusion_matrix)
2019/07/14 Python
python爬虫模拟浏览器的两种方法实例分析
2019/12/09 Python
Python HTTP下载文件并显示下载进度条功能的实现
2020/04/02 Python
python数据处理——对pandas进行数据变频或插值实例
2020/04/22 Python
html5 worker 实例(一) 为什么测试不到效果
2013/06/24 HTML / CSS
零件设计自荐信范文
2013/11/27 职场文书
尽职尽责村干部自我鉴定
2014/01/23 职场文书
中文专业毕业生自荐信
2014/05/24 职场文书
实习生工作证明范本
2014/09/14 职场文书
《亲亲我的妈妈》观后感(3篇)
2019/09/26 职场文书
html+css 实现简易导航栏功能
2021/04/07 HTML / CSS
交互式可视化js库gojs使用介绍及技巧
2022/02/18 Javascript
MYSQL如何查看操作日志详解
2022/05/30 MySQL