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上传图片重命名的6种解决方法的详细介绍
Apr 28 PHP
php获取本周星期一具体日期的方法
Apr 20 PHP
在WordPress的文章编辑器中设置默认内容的方法
Dec 29 PHP
php使用pclzip类实现文件压缩的方法(附pclzip类下载地址)
Apr 30 PHP
PHP接收App端发送文件流的方法
Sep 23 PHP
php与python实现的线程池多线程爬虫功能示例
Oct 12 PHP
详解PHP中foreach的用法和实例
Oct 25 PHP
yii框架搜索分页modle写法
Dec 19 PHP
Thinkphp3.2实用篇之计算型验证码示例
Feb 09 PHP
PHP命名空间namespace的定义方法详解
Mar 29 PHP
php操作redis数据库常见方法实例总结
Feb 20 PHP
PHP控制循环操作的时间
Apr 01 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
用PHP和ACCESS写聊天室(一)
2006/10/09 PHP
PHP临时文件的安全性分析
2014/07/04 PHP
php cli配置文件问题分析
2015/10/15 PHP
PHP多维数组遍历方法(2种实现方法)
2015/12/10 PHP
对比分析php中Cookie与Session的异同
2016/02/19 PHP
javascript 遍历验证所有文本框的值
2009/08/27 Javascript
js判断生效时间不得大于失效时间的思路及代码
2013/04/23 Javascript
在Firefox下js select标签点击无法弹出
2014/03/06 Javascript
jquery实现不同大小浏览器使用不同的css样式表的方法
2014/04/02 Javascript
javascript打开word文档的方法
2014/04/16 Javascript
Flexigrid在IE下不显示数据的有效处理方法
2014/09/04 Javascript
详解JavaScript正则表达式之RegExp对象
2015/12/13 Javascript
jQuery取得iframe中元素的常用方法详解
2016/01/14 Javascript
AngularJS使用ng-repeat指令实现下拉框
2016/08/23 Javascript
Webpack 4.x搭建react开发环境的方法步骤
2018/08/15 Javascript
详解微信小程序调用支付接口支付
2019/04/28 Javascript
python 借助numpy保存数据为csv格式的实现方法
2018/07/04 Python
使用Scrapy爬取动态数据
2018/10/21 Python
对Python函数设计规范详解
2019/07/19 Python
用Python从0开始实现一个中文拼音输入法的思路详解
2019/07/20 Python
python实现将字符串中的数字提取出来然后求和
2020/04/02 Python
Python3实现打印任意宽度的菱形代码
2020/04/12 Python
Python实现像awk一样分割字符串
2020/09/15 Python
CSS3 开发工具收集
2010/04/17 HTML / CSS
微软俄罗斯官方网站:Microsoft俄罗斯
2016/09/18 全球购物
真正的英国宝藏:Mappin & Webb
2019/05/05 全球购物
厨师岗位职责
2013/11/12 职场文书
国税会议欢迎词
2014/01/16 职场文书
《油菜花开了》教学反思
2014/02/22 职场文书
授权委托书公证
2014/09/14 职场文书
乡镇党员干部群众路线对照检查材料思想汇报
2014/09/28 职场文书
销售代理协议书
2014/09/30 职场文书
PyTorch dropout设置训练和测试模式的实现
2021/05/27 Python
新手入门Jvm-- JVM对象创建与内存分配机制
2021/06/18 Java/Android
MySQL的InnoDB存储引擎的数据页结构详解
2022/03/03 MySQL