欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

php获取目标函数执行时间示例

程序员文章站 2023-11-30 11:18:34
写了一个类用来测试目标函数的执行时间。以下是类的定义代码: 复制代码 代码如下:

写了一个类用来测试目标函数的执行时间。以下是类的定义代码:

复制代码 代码如下:

<?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() 函数中的判断占用了一部分时间。