基準測試類
CodeIgniter 有一個總是有效的基準測試類,能夠用來計算兩個標記點的時間差.
注意:這個類會被系統(tǒng)自動初始化,因此不需要手動初始化.
另外,基準測試類在框架被調用的時候開始,在最終視圖被output類送給瀏覽器之前結束,可以顯示整個系統(tǒng)執(zhí)行的精確定時.
目錄
- 使用測試基準類
- 自定義你的測試基準類
- 顯示總的執(zhí)行時間
- 顯示內存消耗
使用基準測試類
測試基準類可以在 控制器, 視圖,或者 模型.中使用,用法如下:
- 標記一個開始點
- 標記一個結束點
- 運行elapsed_time函數(shù)顯示結果
下面是一個代碼示例:
$this->benchmark->mark('code_start');
// Some code happens here
$this->benchmark->mark('code_end');
echo $this->benchmark->elapsed_time('code_start', 'code_end');
注意:單詞“code_start”和“code_end”是任意的,他們是簡單的單詞用來做為兩個標記。你可以使用你想用的任意單詞,并且你可以設置多個標記,參考下面的這些代碼:
$this->benchmark->mark('dog');
// Some code happens here
$this->benchmark->mark('cat');
// More code happens here
$this->benchmark->mark('bird');
echo $this->benchmark->elapsed_time('dog', 'cat');
echo $this->benchmark->elapsed_time('cat', 'bird');
echo $this->benchmark->elapsed_time('dog', 'bird');
自定義你的基準測試類
如果你想你的基準數(shù)據(jù)對評測有效,你的標記點必須設置成對,并且每個標記點必須用_start 和_end結束.每一對標記點的前部必須相同.例如:
$this->benchmark->mark('my_mark_start');
// Some code happens here...
$this->benchmark->mark('my_mark_end');
$this->benchmark->mark('another_mark_start');
// Some more code happens here...
$this->benchmark->mark('another_mark_end');
更多信息請參考 調試你的應用程序 .
顯示總的執(zhí)行時間
如果你想顯示從CodeIgniter啟動到瀏覽器最終輸出的時間消耗,簡單把這段代碼放到你的一個視圖模板中:
<?php echo $this->benchmark->elapsed_time();?>
你會注意到這個函數(shù)和上面例子中計算兩個標記點時間差的函數(shù)是同一個, 不同的是這里你沒有使用參數(shù).當參數(shù)為空的時候,CodeIgniter一直會到最終頁面被送往瀏覽器之前才停止benchmark .它不管你是在哪里調用的,計時器會持續(xù)到最終結束.
如果不喜歡使用純PHP,另外一種備用的來顯示時間消耗的方式是在視圖文件中使用這個偽變量:
{elapsed_time}
注意:如果你想在你的控制器函數(shù)中benchmark(基準測試)一些東西, 你必須設置你自己的開始/結束點.
顯示內存消耗
如果你的PHP在安裝的時候被配置成--enable-memory-limit,你可以將下面的代碼包含到視圖文件中顯示整個系統(tǒng)的內存使用量:
<?php echo $this->benchmark->memory_usage();?>
注意:這個函數(shù)只能在視圖文件中使用.這個消耗量就是應用程序的全部內存消耗.
如果不喜歡使用純PHP,另外一種備用的來顯示內存使用量的方式是在視圖文件中使用這個偽變量:
{memory_usage}
?