博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CI框架 -- 核心文件 之 Benchmark.php
阅读量:4056 次
发布时间:2019-05-25

本文共 2113 字,大约阅读时间需要 7 分钟。

Benchmark.php文件中定义的CI_Benchmark类可以让你标记点,并计算它们之间的时间差。还可以显示内存消耗。

Benchmarking类库,它是被系统自动被加载的,不需要手工加载

class CI_Benchmark {    /**     * List of all benchmark markers     *     * @var    array     */    public $marker = array();    /**     * 标记时间点     */    public function mark($name)    {        $this->marker[$name] = microtime(TRUE);    }    // --------------------------------------------------------------------    /**     * 计算两个标记点之间的时间差     *     */    public function elapsed_time($point1 = '', $point2 = '', $decimals = 4)    {        if ($point1 === '')        {            return '{elapsed_time}';        }        if ( ! isset($this->marker[$point1]))        {            return '';        }        if ( ! isset($this->marker[$point2]))        {            $this->marker[$point2] = microtime(TRUE);        }        return number_format($this->marker[$point2] - $this->marker[$point1], $decimals);    }    // --------------------------------------------------------------------    public function memory_usage()    {        return '{memory_usage}';    }}

Benchmarking类库能够计算出任意两个被标记点之间的代码执行时间。通过这个数值,可以评估程序员编写的程序的效率。

    另外,当CodeIgniter框架被调用时,系统会调用Benchmark类库中的方法,以计算出Output类库将所有内容正确的发送至浏览器所执行的时间。

    可以在我们自己编写的模型(Model)、视图(View)和控件器(Controller)中通过以下三步使用Benchmark:

  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');
  我们可以任意代码行做标记,并通过elapsed_time方法计算任两个标记点之间的代码执行时间。

$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');
  若希望显示从框架被加载到所有内容被正确发送至浏览器中所消耗的时间,可以在你的视图文件(View)中加入如下语句,
这个语句只能在视图文件(View)中使用。

benchmark->elapsed_time();?>
这句代码和我们在之前的示例中使用的是同一个方法,只不过是没有参数。如果你的视图是使用HTML和PHP混合编写的,你还可以通过使用模板标记来显示结果

{elapsed_time}

    我们还可以在自己编写的视图中使用另一个模板标记来显示内存的使用信息

{memory_usage}

PS:上面提到的{elapsed_time}和{memroy_usage}标记只能在视图文件(View)中使用。

转载地址:http://xhoci.baihongyu.com/

你可能感兴趣的文章
Java大数据:MongoDB数据库入门基础
查看>>
Java大数据:Hbase分布式存储入门
查看>>
Java大数据:全文搜索引擎Elasticsearch入门
查看>>
大数据学习:Hadoop入门学习书单
查看>>
大数据学习:Spark SQL入门简介
查看>>
大数据学习:Spark RDD操作入门
查看>>
大数据框架:Spark 生态实时流计算
查看>>
大数据入门:Hive和Hbase区别对比
查看>>
大数据入门:ZooKeeper工作原理
查看>>
大数据入门:Zookeeper结构体系
查看>>
大数据入门:Spark RDD基础概念
查看>>
大数据入门:SparkCore开发调优原则
查看>>
大数据入门:Java和Scala编程对比
查看>>
大数据入门:Scala函数式编程
查看>>
大数据入门:Spark持久化存储策略
查看>>
大数据入门:大数据数据仓库解析
查看>>
大数据入门:Spark RDD、DataFrame、DataSet
查看>>
大数据流处理框架:Spark Streaming与Storm
查看>>
大数据入门:Flink状态编程与容错机制
查看>>
大数据基础:Java多线程入门
查看>>