非常教程

Codeigniter 3参考手册

基准 | Benchmarking

基准类 | Benchmarking Class

CodeIgniter有一个始终处于活动状态的Benchmarking类,可以计算任意两个标记点之间的时间差。

注意

该类由系统自动初始化,因此不需要手动执行。

另外,基准总是在框架被调用的时候开始,并且在将最终视图发送到浏览器之前由输出类结束,从而能够显示整个系统执行的非常准确的时间。

  • 使用基准类
    • 分析您的基准点
    • 显示总执行时间
    • 显示内存消耗
  • 类参考

使用基准类

Benchmark类可以在您的控制器,视图或模型中使用。使用过程如下:

  1. 标出一个起点
  2. 标记一个终点
  3. 运行“经过时间”功能查看结果

以下是使用实际代码的示例:

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

分析您的基准点

如果您希望基准数据可用于Profiler,则必须成对设置所有标记点,并且每个标记点名称必须以_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');

请阅读Profiler页面以获取更多信息。

显示总执行时间

如果您希望显示从CodeIgniter开始到最终输出发送到浏览器时的总运行时间,只需将其放置在其中一个视图模板中即可:

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

您会注意到,除了使用任何参数之外,它与上述示例中用于计算两点之间的时间相同的函数。当参数不存在时,CodeIgniter不会停止基准测试,直到最终输出发送到浏览器之前。使用函数调用的地方并不重要,定时器将继续运行直到最后。

在视图文件中显示已用时间的另一种方法是使用此伪变量,如果您不想使用纯PHP:

{elapsed_time}

注意

如果您想在控制器功能中对任何内容进行基准测试,您必须设置您自己的开始/结束点。

显示内存消耗

如果您的PHP安装配置了-enable-memory-limit,则可以在您的一个视图文件中使用以下代码显示整个系统所消耗的内存量:

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

注意

此功能只能用于您的视图文件。消耗将反映整个应用程序使用的总内存。

在视图文件中显示内存使用情况的另一种方法是使用此伪变量,如果您不想使用纯PHP:

{memory_usage}

类参考

class CI_Benchmarkmark($name)

参数:

$ name(字符串) - 你想分配给你的标记的名字

返回类型:

空虚

  • $ name字符串) - 你想分配给你的标记的名字
返回类型:void
设置基准标记。

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

参数:

$ point1(字符串) - 特定的标记点$ point2(字符串) - 特定的标记点$ decimals(int) - 精度的小数位数

返回:

经过的时间

返回类型:

  • $ point1字符串) - 一个特定的标记点
  • $ point2字符串) - 一个特定的标记点
  • $ decimalsint) - 精度的小数位数
返回:已用时间
返回类型:字符串
计算并返回两个标记点之间的时间差。

如果第一个参数为空,则此函数会返回{elapsed_time}伪变量。这允许完整的系统执行时间显示在模板中。输出类将交换此变量的实际值。

memory_usage()

返回:

内存使用信息

返回类型:

基准 | Benchmarking相关

Codeigniter 3

CodeIgniter 是一个PHP MVC框架,特点是超轻量级、有数据加密、有灵活URI路由等。对于 PHP 程序员来说,它小巧但功能强大。

主页 https://codeigniter.com/
源码 https://github.com/bcit-ci/CodeIgniter
版本 3
发布版本 3.1.5