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编程开发“虚拟域名”系统
Oct 09 PHP
UTF8编码内的繁简转换的PHP类
Jul 09 PHP
PHP垃圾回收机制简单说明
Jul 22 PHP
基于php伪静态的实现详细介绍
Apr 28 PHP
PHP Cookie的使用教程详解
Jun 03 PHP
PHP执行Curl时报错提示CURL ERROR: Recv failure: Connection reset by peer的解决方法
Jun 26 PHP
PHP实现根据时间戳获取周几的方法
Feb 26 PHP
PHP读书笔记_运算符详解
Jul 01 PHP
php处理复杂xml数据示例
Jul 11 PHP
LaravelS通过Swoole加速Laravel/Lumen详解
Mar 02 PHP
php中上传文件的的解决方案
Sep 25 PHP
PHP检查文件是否存在,不存在自动创建及读取文件内容操作示例
Jan 23 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/02 日漫
PHP和Mysqlweb应用开发核心技术-第1部分 Php基础-2 php语言介绍
2011/07/03 PHP
PHP上传图片进行等比缩放可增加水印功能
2014/01/13 PHP
排序算法之PHP版快速排序、冒泡排序
2014/04/09 PHP
php基于curl扩展制作跨平台的restfule 接口
2015/05/11 PHP
PHP实现页面静态化的超简单方法
2016/09/06 PHP
基于Jquery 解决Ajax请求的页面 浏览器后退前进功能,页面刷新功能实效问题
2010/12/11 Javascript
Javascript中自动切换焦点实现代码
2012/12/15 Javascript
jquery得到font-size属性值实现代码
2013/09/30 Javascript
javascript记住用户名和登录密码(两种方式)
2015/08/04 Javascript
Javascript基于AJAX回调函数传递参数实例分析
2015/12/15 Javascript
jQuery使用中可能被XSS攻击的一些危险环节提醒
2016/05/24 Javascript
使用ionic切换页面卡顿的解决方法
2016/12/16 Javascript
详解Angular的内置过滤器和自定义过滤器【推荐】
2016/12/26 Javascript
php输出全部gb2312编码内的汉字方法
2017/03/04 Javascript
jQuery.Sumoselect插件实现下拉复选框效果
2017/11/09 jQuery
从parcel.js打包出错到选择nvm的全部过程
2018/01/23 Javascript
vuex的简单使用教程
2018/02/02 Javascript
JQuery属性操作与循环用法示例
2019/05/15 jQuery
JavaScript Tab菜单实现过程解析
2020/05/13 Javascript
详解JavaScript作用域 闭包
2020/07/29 Javascript
[01:05:56]2018DOTA2亚洲邀请赛3月29日 小组赛A组 Newbee VS VG
2018/03/30 DOTA
Python实现的txt文件去重功能示例
2018/07/07 Python
从请求到响应过程中django都做了哪些处理
2018/08/01 Python
Python进程,多进程,获取进程id,给子进程传递参数操作示例
2019/10/11 Python
Django框架ORM数据库操作实例详解
2019/11/07 Python
详解anaconda离线安装pytorchGPU版
2020/09/08 Python
python pip如何手动安装二进制包
2020/09/30 Python
Python中常用的os操作汇总
2020/11/05 Python
英国领先的汽车轮胎和快速健康中心:Kwik Fit
2017/10/29 全球购物
数控技术专科生自我评价
2014/01/08 职场文书
2014年最新学习全国两会精神心得
2014/03/17 职场文书
2014年城管个人工作总结
2014/12/08 职场文书
2015年行政工作总结范文
2015/04/09 职场文书
中学政教处工作总结
2015/08/13 职场文书
一文读懂go中semaphore(信号量)源码
2021/04/03 Golang