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 相关文章推荐
探讨GDFONTPATH能否被winxp下的php支持
Jun 21 PHP
PHP以指定字段为索引返回数据库所取的数据数组
Jun 30 PHP
php+js iframe实现上传头像界面无跳转
Apr 29 PHP
php通过分类列表产生分类树数组的方法
Apr 20 PHP
yii2.0实现验证用户名与邮箱功能
Dec 22 PHP
功能强大的PHP POST提交数据类
Jul 15 PHP
根据key删除数组中指定的元素实现方法
Mar 02 PHP
利用PHP获取访客IP、地区位置、浏览器及来源页面等信息
Jun 27 PHP
针对thinkPHP5框架存储过程bug重写的存储过程扩展类完整实例
Jun 16 PHP
php微信公众号开发之微信企业付款给个人
Oct 04 PHP
php如何利用pecl安装mongodb扩展详解
Jan 09 PHP
PHP htmlspecialchars()函数用法与实例讲解
Mar 08 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与MySQL交互使用详解
2006/10/09 PHP
两个强悍的php 图像处理类1
2009/06/15 PHP
深入理解PHP之OpCode原理详解
2016/06/01 PHP
JavaScript实现删除电脑的关机键
2016/07/26 PHP
Yii2处理密码加密及验证的方法
2019/05/12 PHP
PHP之多条件混合筛选功能的实现方法
2019/10/09 PHP
使用jquery获取网页中图片高度的两种方法
2013/09/26 Javascript
javascript中style.left和offsetLeft的用法说明
2014/03/07 Javascript
javascript控制层显示或隐藏的方法
2015/07/22 Javascript
AngularJS中的拦截器实例详解
2017/04/07 Javascript
ReactNative之键盘Keyboard的弹出与消失示例
2017/07/11 Javascript
Angular实现较为复杂的表格过滤,删除功能示例
2017/12/23 Javascript
Vue 拦截器对token过期处理方法
2018/01/23 Javascript
在vue项目中引用Iview的方法
2018/09/14 Javascript
详解Vue2 添加对scss的支持
2019/01/02 Javascript
js全屏事件fullscreenchange 实现全屏、退出全屏操作
2019/09/17 Javascript
pip 错误unused-command-line-argument-hard-error-in-future解决办法
2014/06/01 Python
Python上传package到Pypi(代码简单)
2016/02/06 Python
tensorflow学习笔记之简单的神经网络训练和测试
2018/04/15 Python
Django 忘记管理员或忘记管理员密码 重设登录密码的方法
2018/05/30 Python
Python使用pylab库实现绘制直方图功能示例
2018/06/01 Python
Python3使用SMTP发送带附件邮件
2020/06/16 Python
python实现猜数字小游戏
2020/03/24 Python
python3.5绘制随机漫步图
2018/08/27 Python
pygame实现打字游戏
2021/02/19 Python
总结30个CSS3选择器
2017/04/13 HTML / CSS
CSS3实现菜单悬停效果
2020/11/17 HTML / CSS
Joe Fresh官网:加拿大时尚品牌和零售连锁店
2016/11/30 全球购物
Europcar意大利:汽车租赁
2019/07/07 全球购物
定义一结构体变量,用其表示点坐标,并输入两点坐标,求两点之间的距离
2015/08/17 面试题
求职者应聘的自我评价
2013/10/16 职场文书
亮化工程实施方案
2014/03/17 职场文书
中学生2014国庆节演讲稿:不屈的民族
2014/09/21 职场文书
委托书格式范文
2015/01/28 职场文书
2016优秀员工先进事迹材料
2016/02/25 职场文书
SpringCloud Alibaba 基本开发框架搭建过程
2021/06/13 Java/Android