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获取目标函数执行时间示例
声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@