這一篇是完結篇,要談最後一部分:調用 功能的設計。
先看源碼:
function 開始($註記 = false){
$this->調用 = array();
$this->堆疊 = array();
HACGIS 發表在 痞客邦 留言(0) 人氣()
今天要談的是有關測試這個功能項目的解說,廢話不多說,來看源碼:
private function &耗時(&$開始, &$結束){
$耗時 = array();
$次數 = count($開始);
HACGIS 發表在 痞客邦 留言(0) 人氣()
恩~感謝朋友們的關心,這幾天有點小感冒,不過總算把藍星侵略者143完食。
現在讓我們來看一下源碼解說,以下三個函數是時點這項功能相關的函數:
function 時點($註記){
$this->時點[$註記] = microtime(true);
HACGIS 發表在 痞客邦 留言(0) 人氣()
讓我們繼續之前的話題,上一次我說會考慮加入自動註記的功能,不過我考慮了一下,決定還是不要,因為我沒辦法假設每個出入口都會被設置進入與離開點,但是在下個版本,我還是會加上一個欄位「函數」,來標明這個時點是屬於哪個函數的,接下來讓我們來看看各項功能的成員函數的解說。
時點:
- 時點($註記):設定某個時點。
- 時差($開始, $結束):傳回兩個註記之間的時差。
- &彙整:時點($表格 = false):將曾紀錄過的時點資訊傳回,若$表格 == true,則傳回HTML的表格資料。
測試:
HACGIS 發表在 痞客邦 留言(1) 人氣()
首先讓我來談一下,我改寫的這個量測類別與PEAR::Benchmark有何不同。
- 量測是一個單一且未繼承其他類別的單純類別,而Benchmark是繼承PEAR類別且根據功能拆分成三個小類別。
- 量測在輸出的部份僅輸出HTML,而Benchmark可選擇輸出HTML及Plain。
- 量測在輸出上交由其他的一般函數來處理,而Benchmark則交由成員函數來處理。
- 量測在計算上不考慮使用BCmath模組,而Benchmark則有。
- 量測在測試函數的方式上可選擇不同的參數傳遞方式,而Benchmark則僅有一種方式。
- 量測在調用函數的分析上考慮了多重出口的情況,而Benchmark不考慮。
大致上就如以上所述,接下來我先談一下量測這個類別與其他的程式有何不同,以及為何要如此設計的考量。
量測的類別通常使用於開發過程中,或是在維護階段尋找程式執行的瓶頸,幾乎不會被用在一般正在線上執行的系統中,所以我才會將三個功能全部放在一起。
HACGIS 發表在 痞客邦 留言(0) 人氣()