CI框架 -- 核心文件 之 Benchmark.php
来源:互联网 发布:淘宝男装 知乎 编辑:程序博客网 时间:2024/06/06 02:42
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:
- 标记起始点
- 标记结束点
- 调用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)中使用。
<?php echo $this->benchmark->elapsed_time();?>
这句代码和我们在之前的示例中使用的是同一个方法,只不过是没有参数。如果你的视图是使用HTML和PHP混合编写的,你还可以通过使用模板标记来显示结果
{elapsed_time}
我们还可以在自己编写的视图中使用另一个模板标记来显示内存的使用信息
{memory_usage}
PS:上面提到的{elapsed_time}和{memroy_usage}标记只能在视图文件(View)中使用。
0 0
- CI框架 -- 核心文件 之 Benchmark.php
- CI框架源码完全分析之核心文件Codeigniter.php
- CI框架源码完全分析之核心文件Codeigniter.php
- CI框架源码解析四之基准测试类文件Benchmark.php
- CI框架源码完全分析之核心文件(装载器)Loader.php
- CI框架源码完全分析之核心文件(超级控制器)Controller.php
- CI框架源码完全分析之核心文件(模型)Model.php
- CI框架源码完全分析之核心文件(路由)Router.php
- CI框架源码完全分析之核心文件(钩子)Hooks.php
- CI框架源码完全分析之核心文件(输入类)Input.php
- CI框架源码完全分析之核心文件(安全类)Security.php
- CI框架源码完全分析之核心文件(输出类)Output.php
- CI框架源码完全分析之核心文件(异常处理)Exceptions.php
- CI框架源码完全分析之核心文件(UTF8类)Utf8.php
- CI框架源码完全分析之核心文件(URI类)URI.php
- CI框架源码完全分析之核心文件(输入类)Input.php
- CI框架源码阅读---------基准测试类Benchmark.php
- CI框架源码阅读笔记5 基准测试 BenchMark.php
- 几个简单的算法
- CodeForces 312B Archer
- scp 跨机远程拷贝
- Spark入门
- 战略游戏
- CI框架 -- 核心文件 之 Benchmark.php
- 欢迎使用CSDN-markdown编辑器
- synchronized的应用
- python 中 xgboost 安装
- 关于即时通信小项目的整理总结
- Scroller的工作原理概括
- CodeForces 312C The Closest Pair(构造)
- 教您如何从ECSHOP整站中提取单独模板的方法
- Linux 设备驱动框架