# CodeIgniter 用户指南 版本 2.2.0

编辑文档、查看近期更改请 登录 或 注册 找回密码

搜索用户指南

查看原文

# 基准测试类

CodeIgniter 有一个总是有效的基准测试类,能够用来计算两个标记点的时间差.

注意:这个类会被系统自动初始化,因此不需要手动初始化.

另外,基准测试类在框架被调用的时候开始,在最终视图被output类送给浏览器之前结束,提供整个系统执行的精确计时.

### 目录

- 使用测试基准类
- 自定义你的测试基准类
- 显示总的执行时间
- 显示内存消耗

## 使用基准测试类

测试基准类可以在 控制器, 视图,或者 模型.中使用,用法如下:

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

## 自定义你的基准测试类

如果你想你的基准数据对评测有效,你的标记点必须设置成对,并且每个标记点必须用_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`');`

更多信息请参考 调试你的应用程序 .

## 显示总的执行时间

如果你想显示从CodeIgniter启动到浏览器最终输出的时间消耗,简单把这段代码放到你的一个视图模板中:

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

你会注意到这个函数和上面例子中计算两个标记点时间差的函数是同一个, 不同的是这里你没有使用参数.当参数为空的时候,CodeIgniter一直会到最终页面被送往浏览器之前才停止benchmark .它不管你是在哪里调用的,计时器会持续到最终结束.

如果不喜欢使用纯PHP,另外一种备用的来显示时间消耗的方式是在视图文件中使用这个伪变量:

`{elapsed_time}`

注意:如果你想在你的控制器函数中benchmark(基准测试)一些东西, 你必须设置你自己的开始/结束点.

## 显示内存消耗

如果你的PHP在安装的时候被配置成--enable-memory-limit,你可以将下面的代码包含到视图文件中显示整个系统的内存使用量:

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

注意:这个函数只能在视图文件中使用.这个消耗量就是应用程序的全部内存消耗.

如果不喜欢使用纯PHP,另外一种备用的来显示内存使用量的方式是在视图文件中使用这个伪变量:

`{memory_usage}`

翻译贡献者: drazzi, Hex, levin, Roger_masslong
最后修改: 2012-11-14 15:13:24