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 三维饼图的实现代码
Sep 28 PHP
用mysql内存表来代替php session的类
Feb 01 PHP
php空间不支持socket但支持curl时recaptcha的用法
Nov 07 PHP
PHP+Ajax异步通讯实现用户名邮箱验证是否已注册( 2种方法实现)
Dec 28 PHP
解析php中session的实现原理以及大网站应用应注意的问题
Jun 17 PHP
php自动加载autoload机制示例分享
Feb 20 PHP
PHP冒泡算法详解(递归实现)
Nov 10 PHP
php将textarea数据提交到mysql出现很多空格的解决方法
Dec 19 PHP
CodeIgniter常用知识点小结
May 26 PHP
[原创]PHP实现SQL语句格式化功能的方法
Jul 28 PHP
PHP文件管理之实现网盘及压缩包的功能操作
Sep 20 PHP
一次项目中Thinkphp绕过禁用函数的实战记录
Nov 17 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
40年前的这部特摄片恐龙特级克塞号80后的共同回忆
2020/03/08 日漫
php中DOMElement操作xml文档实例演示
2013/03/26 PHP
Thinkphp实现MySQL读写分离操作示例
2014/06/25 PHP
PHP函数eval()介绍和使用示例
2014/08/20 PHP
php post大量数据时发现数据丢失问题解决方法
2015/06/20 PHP
php实现Mysql简易操作类
2015/10/11 PHP
PHP框架Laravel插件Pagination实现自定义分页
2020/04/22 PHP
PHP实现webshell扫描文件木马的方法
2017/07/31 PHP
JavaScript入门教程(10) 认识其他对象
2009/01/31 Javascript
javascript 异步页面查询实现代码(asp.net)
2010/05/26 Javascript
js操作checkbox遇到的问题解决
2013/06/29 Javascript
javascript中不提供sleep功能如何实现这个功能
2014/05/27 Javascript
javaScript使用EL表达式的几种方式
2014/05/27 Javascript
解决vue打包后vendor.js文件过大问题
2019/07/03 Javascript
js函数柯里化的方法和作用实例分析
2020/04/11 Javascript
Python求解平方根的方法
2015/03/11 Python
Python模块搜索概念介绍及模块安装方法介绍
2015/06/03 Python
python if not in 多条件判断代码
2016/09/21 Python
Python3.6实现连接mysql或mariadb的方法分析
2018/05/18 Python
Flask入门之上传文件到服务器的方法示例
2018/07/18 Python
python 实现视频流下载保存MP4的方法
2019/01/09 Python
基于python3 的百度图片下载器的实现代码
2019/11/05 Python
django中url映射规则和服务端响应顺序的实现
2020/04/02 Python
Python读入mnist二进制图像文件并显示实例
2020/04/24 Python
Python3.7在anaconda里面使用IDLE编译器的步骤详解
2020/04/29 Python
Keras—embedding嵌入层的用法详解
2020/06/10 Python
利用python绘制中国地图(含省界、河流等)
2020/09/21 Python
python 对象真假值的实例(哪些视为False)
2020/12/11 Python
LN-CC美国:伦敦时尚生活的缩影
2019/02/19 全球购物
Volcom英国官方商店:美国殿堂级滑板、冲浪、滑雪服装品牌
2019/03/13 全球购物
药剂学专业应届生自荐信
2013/09/29 职场文书
中职生自荐信
2013/10/13 职场文书
《三袋麦子》教学反思
2014/03/02 职场文书
Python词云的正确实现方法实例
2021/05/08 Python
python使用opencv对图像添加噪声(高斯/椒盐/泊松/斑点)
2022/04/06 Python
SQL中的连接查询详解
2022/06/21 SQL Server