?
This document uses PHP Chinese website manual Release
CodeIgniter有一個始終處于活動狀態(tài)的Benchmarking類,可以計算任意兩個標(biāo)記點(diǎn)之間的時間差。
注意
該類由系統(tǒng)自動初始化,因此不需要手動執(zhí)行。
另外,基準(zhǔn)總是在框架被調(diào)用的時候開始,并且在將最終視圖發(fā)送到瀏覽器之前由輸出類結(jié)束,從而能夠顯示整個系統(tǒng)執(zhí)行的非常準(zhǔn)確的時間。
使用基準(zhǔn)類
分析您的基準(zhǔn)點(diǎn)
顯示總執(zhí)行時間
顯示內(nèi)存消耗
類參考
Benchmark類可以在您的控制器,視圖或模型中使用。使用過程如下:
標(biāo)出一個起點(diǎn)
標(biāo)記一個終點(diǎn)
運(yùn)行“經(jīng)過時間”功能查看結(jié)果
以下是使用實際代碼的示例:
$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”是任意的。它們只是用來設(shè)置兩個標(biāo)記的單詞。您可以使用任何您想要的單詞,并且可以設(shè)置多組標(biāo)記??紤]這個例子:
$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)數(shù)據(jù)可用于Profiler,則必須成對設(shè)置所有標(biāo)記點(diǎn),并且每個標(biāo)記點(diǎn)名稱必須以_start和_end結(jié)尾。必須以相同的方式命名每一對點(diǎn)。例:
$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');
請閱讀Profiler頁面以獲取更多信息。
如果您希望顯示從CodeIgniter開始到最終輸出發(fā)送到瀏覽器時的總運(yùn)行時間,只需將其放置在其中一個視圖模板中即可:
<?php echo $this->benchmark->elapsed_time();?>
您會注意到,除了不使用任何參數(shù)之外,它與上述示例中用于計算兩點(diǎn)之間的時間相同的函數(shù)。當(dāng)參數(shù)不存在時,CodeIgniter不會停止基準(zhǔn)測試,直到最終輸出發(fā)送到瀏覽器之前。使用函數(shù)調(diào)用的地方并不重要,定時器將繼續(xù)運(yùn)行直到最后。
在視圖文件中顯示已用時間的另一種方法是使用此偽變量,如果您不想使用純PHP:
{elapsed_time}
注意
如果您想在控制器功能中對任何內(nèi)容進(jìn)行基準(zhǔn)測試,您必須設(shè)置您自己的開始/結(jié)束點(diǎn)。
如果您的PHP安裝配置了-enable-memory-limit,則可以在您的一個視圖文件中使用以下代碼顯示整個系統(tǒng)所消耗的內(nèi)存量:
<?php echo $this->benchmark->memory_usage();?>
注意
此功能只能用于您的視圖文件。消耗將反映整個應(yīng)用程序使用的總內(nèi)存。
在視圖文件中顯示內(nèi)存使用情況的另一種方法是使用此偽變量,如果您不想使用純PHP:
{memory_usage}
class CI_Benchmarkmark($name)
參數(shù): | $ name(字符串) - 你想分配給你的標(biāo)記的名字 |
---|---|
返回類型: | 空虛 |
$ name(字符串) - 你想分配給你的標(biāo)記的名字
返回類型:void
設(shè)置基準(zhǔn)標(biāo)記。
elapsed_time([$point1 = ''[, $point2 = ''[, $decimals = 4]]])
參數(shù): | $ point1(字符串) - 特定的標(biāo)記點(diǎn)$ point2(字符串) - 特定的標(biāo)記點(diǎn)$ decimals(int) - 精度的小數(shù)位數(shù) |
---|---|
返回: | 經(jīng)過的時間 |
返回類型: | 串 |
$ point1(字符串) - 一個特定的標(biāo)記點(diǎn)
$ point2(字符串) - 一個特定的標(biāo)記點(diǎn)
$ decimals(int) - 精度的小數(shù)位數(shù)
返回:已用時間
返回類型:字符串
計算并返回兩個標(biāo)記點(diǎn)之間的時間差。
如果第一個參數(shù)為空,則此函數(shù)會返回{elapsed_time}
偽變量。這允許完整的系統(tǒng)執(zhí)行時間顯示在模板中。輸出類將交換此變量的實際值。
memory_usage()
返回: | 內(nèi)存使用信息 |
---|---|
返回類型: | 串 |