CodeIgniter 基準(zhǔn)測(cè)試類

2018-07-21 15:38 更新

基準(zhǔn)測(cè)試類

CodeIgniter 有一個(gè)一直都是啟用狀態(tài)的基準(zhǔn)測(cè)試類,用于計(jì)算兩個(gè)標(biāo)記點(diǎn)之間的時(shí)間差。

注解

該類是由系統(tǒng)自動(dòng)加載,無(wú)需手動(dòng)加載。

另外,基準(zhǔn)測(cè)試總是在框架被調(diào)用的那一刻開始,在輸出類向?yàn)g覽器發(fā)送最終的視圖之前結(jié)束。 這樣可以顯示出整個(gè)系統(tǒng)執(zhí)行的精確時(shí)間。

使用基準(zhǔn)測(cè)試類

基準(zhǔn)測(cè)試類可以在你的 控制器、視圖 以及 模型 中使用。

使用流程如下:

  1. 標(biāo)記一個(gè)起始點(diǎn)
  2. 標(biāo)記一個(gè)結(jié)束點(diǎn)
  3. 使用 elapsed_time 函數(shù)計(jì)算時(shí)間差。

這里是個(gè)真實(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" 這兩個(gè)單詞是隨意的,它們只是兩個(gè)用于標(biāo)記 的單詞而已,你可以任意使用其他你想使用的單詞,另外,你也可以設(shè)置多個(gè)標(biāo)記點(diǎn)。

看如下示例:

$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');

在 性能分析器 中使用基準(zhǔn)測(cè)試點(diǎn)

如果你希望你的基準(zhǔn)測(cè)試數(shù)據(jù)顯示在 性能分析器 中, 那么你的標(biāo)記點(diǎn)就需要成對(duì)出現(xiàn),而且標(biāo)記點(diǎn)名稱需要以 _start 和 _end 結(jié)束, 每一對(duì)的標(biāo)記點(diǎn)名稱應(yīng)該一致。例如:

$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');

閱讀 性能分析器 頁(yè)面了解更多信息。

顯示總執(zhí)行時(shí)間

如果你想顯示從 CodeIgniter 運(yùn)行開始到最終結(jié)果輸出到瀏覽器之間花費(fèi)的總時(shí)間, 只需簡(jiǎn)單的將下面這行代碼放入你的視圖文件中:

<?php echo $this->benchmark->elapsed_time();?>

你大概也注意到了,這個(gè)方法和上面例子中的介紹的那個(gè)計(jì)算兩個(gè)標(biāo)記點(diǎn)之間時(shí)間差的方法是一樣的, 只是不帶任何參數(shù)。當(dāng)不設(shè)參數(shù)時(shí),CodeIgniter 在向?yàn)g覽器輸出最終結(jié)果之前不會(huì)停止計(jì)時(shí),所以 無(wú)論你在哪里使用該方法,輸出的計(jì)時(shí)結(jié)果都是總執(zhí)行時(shí)間。

如果你不喜歡純 PHP 語(yǔ)法的話,也可以在你的視圖中使用另一種偽變量的方式來(lái)顯示總執(zhí)行時(shí)間:

{elapsed_time}

注解

如果你想在你的控制器方法中進(jìn)行基準(zhǔn)測(cè)試,你需要設(shè)置你自己的標(biāo)記起始點(diǎn)和結(jié)束點(diǎn)。

顯示內(nèi)存占用

如果你的 PHP 在安裝時(shí)使用了 --enable-memory-limit 參數(shù)進(jìn)行編譯,你就可以在你的視圖文件中 使用下面這行代碼來(lái)顯示整個(gè)系統(tǒng)所占用的內(nèi)存大小:

<?php echo $this->benchmark->memory_usage();?>

注解

這個(gè)方法只能在視圖文件中使用,顯示的結(jié)果代表整個(gè)應(yīng)用所占用的內(nèi)存大小。

如果你不喜歡純 PHP 語(yǔ)法的話,也可以在你的視圖中使用另一種偽變量的方式來(lái)顯示占用的內(nèi)存大小:

{memory_usage}

類參考

classCI_Benchmark

mark($name)

參數(shù):

  • $name (string) -- the name you wish to assign to your marker

返回類型: void

設(shè)置一個(gè)基準(zhǔn)測(cè)試的標(biāo)記點(diǎn)。

elapsed_time([$point1 = ''[, $point2 = ''[, $decimals = 4]]])

參數(shù):

  • $point1 (string) -- a particular marked point
  • $point2 (string) -- a particular marked point
  • $decimals (int) -- number of decimal places for precision

返回: Elapsed time

返回類型: string

計(jì)算并返回兩個(gè)標(biāo)記點(diǎn)之間的時(shí)間差。

如果第一個(gè)參數(shù)為空,方法將返回 {elapsed_time} 偽變量。這用于在視圖中 顯示整個(gè)系統(tǒng)的執(zhí)行時(shí)間,輸出類將在最終輸出時(shí)使用真實(shí)的總執(zhí)行時(shí)間替換掉這個(gè)偽變量。

memory_usage()

返回: Memory usage info
返回類型: string

只是簡(jiǎn)單的返回 {memory_usage} 偽變量。

該方法可以在視圖的任意位置使用,直到最終輸出頁(yè)面時(shí) 輸出類 才會(huì)將真實(shí)的值替換掉這個(gè)偽變量。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)