# 基准测试类
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 贡献你的力量