php 計算PHP指令碼執行時間例子

來源:互聯網
上載者:User

在PHP中,大多數的時間格式都是以UNIX時間戳記表示的,而UNIX時間戳記是以s(秒)為最小的計量時間的單位。這對某些應用程式來說不夠精確,所以可以調用microtime()返回當前UNIX時間戳記和微妙數。該函數的原型如下:

mixed microtime([bool get_as_float]); //返回當前UNIX時間戳記和微妙數

可以為該函數提供一個可選的布爾型參數,如果在調用時不提供這個參數,本函數以“msec sec”的格式返回一個字串。其中sec是自UNIX紀元到現在的秒數,而msec是微妙部分,字串的兩部分都是以秒為單位返回的。如果給出了get_as_float參數並且其值等價於TRUE,microtime()將返回一個浮點數。在小數點前面還是以時間戳記格式表示,而小數點後面則表示微妙的值。但要注意參數get_as_float是在PHP5.0版本中新加的,所以在PHP5以前的版本中,不能直接使用該參數直接請求一個浮點數。在下面的例子中通過兩次調用microtime()函數,計算運行PHP指令碼所需要的時間。代碼如下所示:

 代碼如下 複製代碼
<?php
//生命一個計算指令碼已耗用時間的類
class Timer{
private $startTime = 0; //儲存指令碼開始執行時的時間(以微秒的形式儲存)
private $stopTime = 0; //儲存指令碼結束執行時的時間(以微秒的形式儲存)
 
//在指令碼開始處調用擷取指令碼開始時間的微秒值
function start(){
$this->startTime = microtime(true); //將擷取的時間賦值給成員屬性$startTime
}
//指令碼結束處嗲用指令碼結束的時間微秒值
function stop(){
$this->stopTime = microtime(true); //將擷取的時間賦給成員屬性$stopTime
}
//返回同一指令碼中兩次擷取時間的差值
function spent(){
//計算後4舍5入保留4位返回
return round(($this->stopTime-$this->startTime),4);
}
}
 
$timer= new Timer();
$timer->start(); //在指令檔開始執行時調用這個方法
usleep(1000); //指令碼的主題內容,這裡可以休眠一毫秒為例
$timer->stop(); //在指令檔結束處調用這個方法
 
echo "執行該指令碼用時<b>".$timer->spent()."</b>";
 
?>



在以上指令碼中,聲明一個用於計算指令碼執行時間的類Timer。需要在指令碼執行開始的位置調用該類中的start()方法,擷取指令碼開始執行時的時間。並在指令碼執行結束的位置調用該類中的stop()方法,擷取指令碼運行結束時的時間。再通過訪問該類中的spent()方法,就可以擷取運行指令碼所需的時間。

後面我又打到一個類,下面我們一起來看看吧

 代碼如下 複製代碼
**
 * 擷取某段程式運行所用的時間
 *
 */
class runtime
{
 var $StartTime = 0;
 var $StopTime = 0;
 
 /**
  * 擷取系統時間
  *
  * @return unknown
  */
 function get_microtime()
 {
  list($usec, $sec) = explode(‘ ’, microtime()); //取系統時間 前半部分是時間戳記,後半部分是微妙部分
  return ((float)$usec + (float)$sec);
 }
 /**
  * 取程式開始時候的系統時間
  *
  */
 function start()
 {
  $this->StartTime = $this->get_microtime();  //程式開始的時候用這個方法取一次時間
 }
 /**
  * 取程式結束時候的系統時間
  *
  */
 function stop()
 {
  $this->StopTime = $this->get_microtime();   //程式結束的時候用這個方法取一次時間
 }
 /**
  * 計算出程式運行所用時間
  *
  * @return unknown
  */
 function spent()
 {
    // return round(($this->StopTime - $this->StartTime) * 1000, 1);
 
  return round(($this->StopTime - $this->StartTime), 4); //用結束時候的時間減去開始時候的時間,就是程式啟動並執行時間了
 }
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.