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