iT邦幫忙

DAY 22
2

遭遇PHP之經驗分享系列 第 22

[鐵人賽Day22]計算程式執行過程的時間

今天跟同事閒聊,看到迴圈抓資料驗證再回傳有點慢,就在想有沒有可以測出執行時間之類的
就想說嘗試看看,一開始想各別用Date()去抓秒數,是可以,但是因為擷取出來都是整數,所以要是執行時間是零點幾秒(0.x)的呢
這樣計算出來,結果會顯示執行了0秒

而在搜尋之下,找到了microtime函數
microtime():函數返回當前Unix 時間戳和微秒數
使用方法:microtime ( $get_as_float )
$get_as_float:要是給予參數為TRUE,函數將返回一個浮點數
(參考資料:http://php.net/manual/en/function.microtime.php)

而在等等的範例裡,還有使用到兩個函數,sleep與usleep
sleep()與usleep():延遲執行
這兩個差異在,sleep($s)裡頭的$s是以秒計算,而usleep($s)裡頭的$s是以微秒為計算單位
(參考資料:
sleep:http://php.net/manual/en/function.sleep.php
usleep:http://php.net/manual/zh/function.usleep.php)

以下有一小段程式碼,供各位讀者參考:
「run_time.php」

<?php
    $start_time = date("H")*3600+date("i")*60+date("s");
    $start_time2 = microtime(true);

    //執行的程式碼
    sleep(2); //延遲sleep以秒計算
    //usleep(1000); //延遲usleep以微秒計算

    $end_time = date("H")*3600+date("i")*60+date("s"); 
    $end_time2 = microtime(true);

    echo "start_time:".$start_time."秒<br />";
    echo "end_time:".$end_time."秒<br />";
    $time_total = $end_time - $start_time;
    echo "設定值為sleep(2),執行了:".$time_total."秒<br />";

    //---------------------------
    echo "<hr>";

    echo "start_time2:".$start_time2."秒<br />";
    echo "end_time2:".$end_time2."秒<br />";
    $time_total2 = $end_time2 - $start_time2;
    echo "設定值為sleep(2),執行了:".$time_total2."秒";
?>

輸出結果如圖所示:


上一篇
[鐵人賽Day21]判斷資料庫回傳是否有資料(使用mysql_num_row來處理)
下一篇
[鐵人賽Day23]PHP的開啟檔案-寫入檔案-關閉檔案(超新手計數器示範)
系列文
遭遇PHP之經驗分享30

尚未有邦友留言

立即登入留言