詳解用 MiniFramework 計算程式執行時間的方法
我們在專案調優過程中,通常會對程式碼的執行時間進行統計,以便了解程式執行的效能和效率,這些統計結果將作為程式碼優化時的重要指標,幫助開發者有針對性的進行調優工作。
MiniFramework 在 1.3.0 版本中,新增了 Debug 類,其中包含有時間統計功能的若干方法,可以非常便捷地幫助開發者實現上述統計需求,下面我們來通過示例程式碼介紹具體實現方法。
首先,假設我們有一個名為 Index 的 Controller,並且其中包含有一個名為 index 的 Action(MiniFramework下載包中已經包含),我們將程式碼寫在這個 Action 中,如下:
<?php namespace App\Controller; use Mini\Action; use Mini\Debug; //用use引入Debug類 class Index extends Action { function indexAction() { // 計時開始 Debug::timerStart(); sleep(1); //用sleep模擬程式碼執行1秒鐘 // 紀錄中間計時點 Debug::timerPoint(); sleep(1); // 再次紀錄中間計時點 Debug::timerPoint(); sleep(1); // 計時結束 Debug::timerEnd(); // 獲取計時統計結果 // 引數為 true 時,這個方法會呼叫 dump 將結果直接輸出 Debug::getTimerRecords(true); die(); } }
上述的程式碼中,首先在頂部通過 use 指令引入 Debug 類,由於 Debug 類是歸屬於 MiniFramework 框架的,因此引入時要在類名前加上名稱空間 Mini。
在 Action 中,我們用到了四個方法,分別為:
Debug::timerStart,用於開啟計時器
Debug::timerPoint,用於在計時開始和結束之間記錄若干個中間計時點
Debug::timerEnd,用於結束當前計時器
Debug::getTimerRecords,用於獲得計時結果
在程式碼中,我們通過 sleep 來模擬程式碼執行的時間,便於演示計時器的工作過程。
程式碼儲存並執行後,會看到類似下邊的結果:
array(2) { ["time"] => string(12) "3,002.6779ms" ["point"] => array(2) { [0] => string(12) "1,000.5419ms" [1] => string(12) "2,001.5941ms" } }
上述結果中,time 對應的是本次統計的總時長。point 對應的是中間計時點,值為一個數組,陣列中從0開始的每一個元素對應每次呼叫 Debug::timerPoint 方法時記錄的執行時間。
最後,我們注意到呼叫 Debug::getTimerRecords 方法時,我們傳入了一個 true,作用是讓這個方法呼叫 dump 直接輸出統計結果。當然,開發者也可以將結果賦值給一個變數,例如:
$timerResult = Debug::getTimerRecords();
MiniFramework 是一款遵循 Apache2 開源協議釋出的,支援 MVC 和 RESTful 的超輕量級 PHP 開發框架。旨在幫助開發者用最小的學習成本快速構建 Web 應用,在滿足分層開發、資料庫和快取訪問等少量功能基礎上,做到儘可能精簡,助力應用基於框架高效執行。
MiniFramework 的 GitHub 地址:ofollow,noindex">https://github.com/jasonweicn/MiniFramework
聯絡作者
微博:https://weibo.com/jasonweicn
陽光部落原創,更多內容請訪問http://www.sunbloger.com/