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中使用Oracle数据库(4)
Oct 09 PHP
基于文本的留言簿
Oct 09 PHP
用PHP函数解决SQL injection
Dec 09 PHP
如何用C语言编写PHP扩展的详解
Jun 13 PHP
php $_SERVER windows系统与linux系统下的区别说明
Feb 14 PHP
php禁止某ip或ip地址段访问的方法
Feb 25 PHP
学习php设计模式 php实现工厂模式(factory)
Dec 07 PHP
yii使用activeFileField控件实现上传文件与图片的方法
Dec 28 PHP
PHP foreach遍历多维数组实现方式
Nov 16 PHP
基于yaf框架和uploadify插件,做的一个导入excel文件,查看并保存数据的功能
Jan 24 PHP
php微信开发之关键词回复功能
Jun 13 PHP
php框架知识点的整理和补充
Mar 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
30 个很棒的PHP开源CMS内容管理系统小结
2011/10/14 PHP
PHP大批量插入数据库的3种方法和速度对比
2014/07/08 PHP
WAMP环境中扩展oracle函数库(oci)
2015/06/26 PHP
php使用curl通过代理获取数据的实现方法
2016/05/16 PHP
php json相关函数用法示例
2017/03/28 PHP
Referer原理与图片防盗链实现方法详解
2019/07/03 PHP
PHP SESSION跨页面传递失败解决方案
2020/12/11 PHP
Display SQL Server Version Information
2007/06/21 Javascript
jquery怎样实现ajax联动框(二)
2013/03/08 Javascript
jquery动态添加删除一行数据示例
2014/06/12 Javascript
NodeJs——入门必看攻略
2016/06/27 NodeJs
jQuery为动态生成的select元素添加事件的方法
2016/08/29 Javascript
微信小程序“摇一摇”的实例代码
2017/07/20 Javascript
详解在React.js中使用PureComponent的重要性和使用方式
2018/07/10 Javascript
15分钟学会vue项目改造成SSR(小白教程)
2019/12/17 Javascript
vue 判断两个时间插件结束时间必选大于开始时间的代码
2020/11/04 Javascript
[27:39]Ti4 循环赛第二日 LGD vs Fnatic
2014/07/11 DOTA
使用Python判断质数(素数)的简单方法讲解
2016/05/05 Python
给你选择Python语言实现机器学习算法的三大理由
2017/11/15 Python
python通过链接抓取网站详解
2019/11/20 Python
python生成13位或16位时间戳以及反向解析时间戳的实例
2020/03/03 Python
如何用python处理excel表格
2020/06/09 Python
pycharm激活方法到2099年(激活流程)
2020/09/22 Python
使用Python解析Chrome浏览器书签的示例
2020/11/13 Python
英国最大的体育&时尚零售公司:JD Sports
2017/12/13 全球购物
Conforama瑞士:家具、厨房、电器、装饰
2020/09/06 全球购物
输入N,打印N*N矩阵
2012/02/20 面试题
信息管理专业学生自荐信格式
2013/09/22 职场文书
个人应聘自我评价分享
2013/11/18 职场文书
电子信息科学专业自荐信
2014/01/30 职场文书
幼师自我鉴定
2014/02/01 职场文书
学习保证书100字
2015/02/26 职场文书
2015初中团委工作总结
2015/07/28 职场文书
私人贷款担保书该怎么写呢?
2019/07/02 职场文书
golang 实现菜单树的生成方式
2021/04/28 Golang
Win11 BitLocker 驱动器加密
2022/04/19 数码科技