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 相关文章推荐
3种平台下安装php4经验点滴
Oct 09 PHP
实时抓取YAHOO股票报价的代码
Oct 09 PHP
Discuz! 5.0.0论坛程序中加入一段js代码,让会员点击下载附件前自动弹出提示窗口
Apr 18 PHP
解析php中如何调用用户自定义函数
Aug 06 PHP
PHP统计二维数组元素个数的方法
Nov 12 PHP
php检测useragent版本示例
Mar 24 PHP
PHP获取photoshop写入图片文字信息的方法
Mar 31 PHP
PHP 双链表(SplDoublyLinkedList)简介和使用实例
May 12 PHP
PHP利用超级全局变量$_POST来接收表单数据的实例
Nov 05 PHP
thinkPHP多语言切换设置方法详解
Nov 11 PHP
Yii框架批量插入数据扩展类的简单实现方法
May 23 PHP
php链式操作的实现方式分析
Aug 12 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
PHP手机号码归属地查询代码(API接口/mysql)
2012/09/04 PHP
基于php设计模式中工厂模式详细介绍
2013/05/15 PHP
php操作xml
2013/10/27 PHP
PHP获取一个字符串中间一部分字符的方法
2014/08/19 PHP
PHP+Mysql+jQuery文件下载次数统计实例讲解
2015/10/10 PHP
PHP读取文件,解决中文乱码UTF-8的方法分析
2020/01/22 PHP
javascript延时重复执行函数 lLoopRun.js
2007/06/29 Javascript
用js实现手把手教你月入万刀(转贴)
2007/11/07 Javascript
jQuery LigerUI 使用教程表格篇(1)
2012/01/18 Javascript
JavaScript高级程序设计(第3版)学习笔记12 js正则表达式
2012/10/11 Javascript
得到jQuery detach()后节点中的某个值实现代码
2013/02/05 Javascript
基于JavaScript实现瀑布流布局(二)
2016/01/26 Javascript
js验证真实姓名与身份证号,手机号的简单实例
2016/07/18 Javascript
浅谈JS的基础类型与引用类型
2016/09/13 Javascript
浅谈JavaScript异步编程
2017/01/20 Javascript
JavaScript实用代码小技巧
2018/08/23 Javascript
vue写h5页面的方法总结
2019/02/12 Javascript
vue 列表页跳转详情页获取id以及详情页通过id获取数据
2019/03/27 Javascript
从0到1搭建element后台框架优化篇(打包优化)
2019/05/12 Javascript
Bootstrap 时间日历插件bootstrap-datetimepicker配置与应用小结
2019/05/28 Javascript
socket在egg中的使用实例代码详解
2019/05/30 Javascript
vue使用微信JS-SDK实现分享功能
2019/08/23 Javascript
Python3中使用urllib的方法详解(header,代理,超时,认证,异常处理)
2016/09/21 Python
Zabbix实现微信报警功能
2016/10/09 Python
用python记录运行pid,并在需要时kill掉它们的实例
2017/01/16 Python
详解Python下载图片并保存本地的两种方式
2019/05/15 Python
关于pytorch中全连接神经网络搭建两种模式详解
2020/01/14 Python
Python基于pyecharts实现关联图绘制
2020/03/27 Python
python使用scapy模块实现ping扫描的过程详解
2021/01/21 Python
俄罗斯在线服装店:STOLNIK
2021/03/07 全球购物
信号量和自旋锁的区别?如何选择使用?
2015/09/08 面试题
爱心倡议书范文
2014/05/12 职场文书
公安局负责人查摆问题及整改方案
2014/09/27 职场文书
在校生证明
2015/06/17 职场文书
Nginx代理同域名前后端分离项目的完整步骤
2021/03/31 Servers
Django框架之路由用法
2022/06/10 Python