# 基準測試類
CodeIgniter 有一個一直都是啟用狀態的基準測試類,用于計算兩個標記點之間的時間差。
注解
該類是由系統自動加載,無需手動加載。
另外,基準測試總是在框架被調用的那一刻開始,在輸出類向瀏覽器發送最終的視圖之前結束。 這樣可以顯示出整個系統執行的精確時間。
[TOC]
## 使用基準測試類
基準測試類可以在你的?[控制器](http://codeigniter.org.cn/user_guide/general/controllers.html)、[視圖](http://codeigniter.org.cn/user_guide/general/views.html)?以及?[模型](http://codeigniter.org.cn/user_guide/general/models.html)?中使用。
使用流程如下:
1. 標記一個起始點
2. 標記一個結束點
3. 使用 elapsed_time 函數計算時間差。
這里是個真實的代碼示例:
~~~
$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');
~~~
### 在 性能分析器 中使用基準測試點
如果你希望你的基準測試數據顯示在?[性能分析器](http://codeigniter.org.cn/user_guide/general/profiling.html)?中, 那么你的標記點就需要成對出現,而且標記點名稱需要以 _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');
~~~
閱讀?[性能分析器](http://codeigniter.org.cn/user_guide/general/profiling.html)?頁面了解更多信息。
### 顯示總執行時間
如果你想顯示從 CodeIgniter 運行開始到最終結果輸出到瀏覽器之間花費的總時間, 只需簡單的將下面這行代碼放入你的視圖文件中:
~~~
<?php echo $this->benchmark->elapsed_time();?>
~~~
你大概也注意到了,這個方法和上面例子中的介紹的那個計算兩個標記點之間時間差的方法是一樣的, 只是不帶任何參數。當不設參數時,CodeIgniter 在向瀏覽器輸出最終結果之前不會停止計時,所以 無論你在哪里使用該方法,輸出的計時結果都是總執行時間。
如果你不喜歡純 PHP 語法的話,也可以在你的視圖中使用另一種偽變量的方式來顯示總執行時間:
~~~
{elapsed_time}
~~~
> 注解
> 如果你想在你的控制器方法中進行基準測試,你需要設置你自己的標記起始點和結束點。
### 顯示內存占用
如果你的 PHP 在安裝時使用了 --enable-memory-limit 參數進行編譯,你就可以在你的視圖文件中 使用下面這行代碼來顯示整個系統所占用的內存大小:
~~~
<?php echo $this->benchmark->memory_usage();?>
~~~
> 注解
> 這個方法只能在視圖文件中使用,顯示的結果代表整個應用所占用的內存大小。
如果你不喜歡純 PHP 語法的話,也可以在你的視圖中使用另一種偽變量的方式來顯示占用的內存大小:
~~~
{memory_usage}
~~~
## 類參考
classCI_Benchmark
>[info] ### mark($name)
參數:
* **$name**?(string) -- the name you wish to assign to your marker
返回類型: void
設置一個基準測試的標記點。
elapsed_time([$point1 = ''[,?$point2 = ''[,?$decimals = 4]]])
參數:
* **$point1**?(string) -- a particular marked point
* **$point2**?(string) -- a particular marked point
* **$decimals**?(int) -- number of decimal places for precision
返回: Elapsed time
返回類型: string
計算并返回兩個標記點之間的時間差。
如果第一個參數為空,方法將返回?{elapsed_time}?偽變量。這用于在視圖中 顯示整個系統的執行時間,輸出類將在最終輸出時使用真實的總執行時間替換掉這個偽變量。
>[info] ### memory_usage()
返回: Memory usage info
返回類型: string
只是簡單的返回?{memory_usage}?偽變量。
該方法可以在視圖的任意位置使用,直到最終輸出頁面時?[輸出類](http://codeigniter.org.cn/user_guide/libraries/output.html)?才會將真實的值替換掉這個偽變量。
- 歡迎使用 CodeIgniter
- 安裝說明
- 下載 CodeIgniter
- 安裝說明
- 從老版本升級
- 疑難解答
- CodeIgniter 概覽
- CodeIgniter 將從這里開始
- CodeIgniter 是什么?
- 支持特性
- 應用程序流程圖
- 模型-視圖-控制器
- 設計與架構目標
- 教程 - 內容提要
- 加載靜態內容
- 讀取新聞條目
- 創建新聞條目
- 結束語
- 常規主題
- CodeIgniter URL
- 控制器
- 保留名稱
- 視圖
- 模型
- 輔助函數
- 使用 CodeIgniter 類庫
- 創建類庫
- 使用 CodeIgniter 驅動器
- 創建驅動器
- 創建核心系統類
- 創建附屬類
- 鉤子 - 擴展框架核心
- 自動加載資源
- 公共函數
- 兼容性函數
- URI 路由
- 錯誤處理
- 網頁緩存
- 程序分析
- 以 CLI 方式運行
- 管理你的應用程序
- 處理多環境
- 在視圖文件中使用 PHP 替代語法
- 安全
- PHP 開發規范
- 類庫參考
- 基準測試類
- 緩存驅動器
- 日歷類
- 購物車類
- 配置類
- Email 類
- 加密類
- 加密類(新版)
- 文件上傳類
- 表單驗證類
- FTP 類
- 圖像處理類
- 輸入類
- Javascript 類
- 語言類
- 加載器類
- 遷移類
- 輸出類
- 分頁類
- 模板解析類
- 安全類
- Session 類
- HTML 表格類
- 引用通告類
- 排版類
- 單元測試類
- URI 類
- 用戶代理類
- XML-RPC 與 XML-RPC 服務器類
- Zip 編碼類
- 數據庫參考
- 數據庫快速入門: 示例代碼
- 數據庫配置
- 連接你的數據庫
- 查詢
- 生成查詢結果
- 查詢輔助函數
- 查詢構造器類
- 事務
- 數據庫元數據
- 自定義函數調用
- 數據庫緩存類
- 數據庫工廠類
- 數據庫工具類
- 數據庫驅動器參考
- 輔助函數參考
- 數組輔助函數
- 驗證碼輔助函數
- Cookie 輔助函數
- 日期輔助函數
- 目錄輔助函數
- 下載輔助函數
- 郵件輔助函數
- 文件輔助函數
- 表單輔助函數
- HTML 輔助函數
- 語言輔助函數
- Inflector 輔助函數
- 數字輔助函數
- 路徑輔助函數
- 安全輔助函數
- 表情輔助函數
- 字符串輔助函數
- 文本輔助函數
- 排版輔助函數
- URL 輔助函數
- XML 輔助函數
- 向 CodeIgniter 貢獻你的力量