用户
 找回密码
 入住 CI 中国社区
搜索
查看: 9436|回复: 11
收起左侧

CodeIgniter类库之Benchmarking Class

[复制链接]
发表于 2007-11-26 19:25:58 | 显示全部楼层 |阅读模式
CodeIgniter中有个Benchmarking类库,它是被系统自动被加载的,不需要手工加载。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)中使用。

评分

参与人数 1威望 +5 收起 理由
Hex + 5 精品文章

查看全部评分

发表于 2007-11-27 10:26:57 | 显示全部楼层
太棒了~~~~~~很棒的文章!加威望,加精!
发表于 2007-11-27 11:53:45 | 显示全部楼层
在开发过程中如果仅仅想知道一个页面的运行时间,post数据,运行了哪些sql语句等
就在/system/libraries/Output.php中
找到var $enable_profiler这个值改成TRUE
记得正式版本中关掉就行了。
发表于 2007-11-27 12:21:18 | 显示全部楼层
在控制器里可以控制是不是输出这些内容,不用改 CI 的源代码。
发表于 2007-11-27 23:19:11 | 显示全部楼层
呵呵 偶就是懒得在控制器里面写的嘛
发表于 2007-11-28 10:28:25 | 显示全部楼层
总改 CI 的源代码可不是好习惯哦~
发表于 2007-11-28 17:01:21 | 显示全部楼层
有些源码是不太规范,比如form helper 输出的input都不带id的,不改不行啊
发表于 2007-11-28 17:54:13 | 显示全部楼层
你自己写辅助函数啊!
并且我觉得在视图里最好只使用 HTML 代码(当然必要的循环、分支除外),这样比较方便美工人员制作页面,这也符合 smarty 的做事方式,呵呵。
发表于 2007-11-29 00:09:54 | 显示全部楼层
我命苦,我的美工只负责视觉设计,不负责html,我也懒得让他负责那个,做出来的table套table跟没做一样的
发表于 2007-11-29 10:20:09 | 显示全部楼层
呵呵,那就只好你自己弄了~~~
其实在 RoR 中,辅助方法是用在视图中的,所以在 CI 中这么用应该也会比较好。

本版积分规则