php获取目标函数执行时间示例
写了一个类用来测试目标函数的执行时间。以下是类的定义代码:
<?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 switch语句多个值匹配同一代码块的实现
下一篇: 手柄被我磨得光亮