当前位置:首页 > PHP教程 > php高级应用 > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2020-10-12 15:13:50 浏览: 评论:0 

这篇文章主要介绍了php获取目标函数执行时间示例,需要的朋友可以参考下,写了一个类用来测试目标函数的执行时间。以下是类的定义代码:

  1. <?php 
  2. /** 
  3.  * class EfficiencyTester 
  4.  * 效率测试器,测试函数的运行时间 
  5.  * @version 1.0 2013.04.13 
  6.  * @author Kross 
  7.  */ 
  8. class EfficiencyTester {     
  9.     /** 
  10.      * var $testTimes 
  11.      * 测试的次数  
  12.      */ 
  13.     private $testTimes = 1000; 
  14.  
  15.     /** 
  16.      * function getTime() 
  17.      * 根据时间模式,获取时间戳 
  18.      * @param $timeModel 时间模式,默认:微秒 
  19.      * @return int 时间戳 
  20.      */ 
  21.     private function getTime($timeModel = 'MS') { 
  22.         if ($timeModel == 'MS') { 
  23.             return microtime(); 
  24.         } else if ($timeModel == 'S') { 
  25.             return time(); 
  26.         } else { 
  27.             return microtime(); 
  28.         } 
  29.     } 
  30.     /** 
  31.      * function testOnce() 
  32.      * 测试目标函数一次,返回运行时间 
  33.      * @param $functionName 目标函数名 
  34.      * @param $timeModel 时间模式,默认:微秒 
  35.      * @return double 目标函数运行一次的时间(很随机) 
  36.      */ 
  37.     public function testOnce($functionName$timeModel = 'MS') {         
  38.         $startMicroTime = $this->getTime($timeModel); 
  39.         $functionName(); 
  40.         $endMicroTime = $this->getTime($timeModel); 
  41.  
  42.         $costMicroTime = $endMicroTime - $startMicroTime
  43.  
  44.         return $costMicroTime
  45.     } 
  46.     /** 
  47.     * function test() 
  48.     * 测试目标函数多次,返回运行时间(平均值) 
  49.     * @param $functionName 目标函数名 
  50.     * @param $timeModel 时间模式,默认:微秒 
  51.     * @return double 目标函数运行的时间 
  52.     */ 
  53.     public function test($functionName$timeModel = 'MS') { 
  54.         $totalMicroTimes = 0; 
  55.         for ($i = 1; $i <= $this->testTimes; $i++) { 
  56.             $totalMicroTimes += $this->testOnce($functionName); 
  57.         } 
  58.         return $totalMicroTimes / $this->testTimes; 
  59.     } 
  60. ?> 

以下是类的测试代码:

  1. <?php 
  2. require_once('../class/EfficiencyTester.class.php'); 
  3. $e = new EfficiencyTester(); 
  4. echo $e->test('rand'); 
  5. ?> 

一开始我是直接使用 microtime() 获取时间的,后来考虑到如果想获得单位是秒的运行时间,这样写就不够多态了,然后我就写了一个getTime() 的函数来获取不同单位的时间戳,不过这样,貌似目标函数的运行时间变长了,可能是因为 getTime() 函数中的判断占用了一部分时间。

Tags: php获取函数执行时间

分享到: