Chinaunix首页 | 论坛 | 博客
  • 博客访问: 51189
  • 博文数量: 12
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 142
  • 用 户 组: 普通用户
  • 注册时间: 2013-09-16 21:18
文章分类

全部博文(12)

文章存档

2015年(1)

2014年(1)

2013年(10)

我的朋友

分类: PHP

2013-09-20 00:49:06

    这一节我还是重点说自己的想法吧,接下来在core文件夹的其他类就是为了完成各自的任务了,说实话,只要知识点没有漏洞,我们自己也可以完成它们的.但是这些究竟是什么呢?
        Benchmark类,它是一个基准测试类,其目的也很简单,就是做两件事,第一件事就是保留一个时间使用的数组,然后可以查看任意两点的时间差,说的具体点就是计算某个过程的执行时间,第二个就是计算内存使用量.其实我们可以根据自己的需要进行扩充的,比如调用函数多少次,比如连接数据库多少次,这些常见的功能的扩展还是可以考虑的.它的实现还是蛮简单的,它就是负责记录时间,但是它没有特定的对象,就是它可以负责任何一个模块的事件记录,这恐怕就是aop的体现了.
这里它主要负责如下功能:
1.记录时间以及计算时间差.这一点非常简单,我们只需要使用一个函数microtime()即可截取当时的时间,它返回的时间比较精细可以精确到微秒.
2.记录内存使用,但是它只是返回一个标记,具体的调用由output类来负责,而output类来实现该功能也很简单.

点击(此处)折叠或打开

  1. <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

  2. class CI_Benchmark {

  3.     var $marker = array();


  4.      //设置一个基准测试标记
  5.      //多次调用这个函数可以记录多个可执行点的时间
  6.      //返回值为空,参数为字符串.
  7.     function mark($name)
  8.     {
  9.         $this->marker[$name] = microtime();
  10.     }

  11.     
  12.     /**
  13.     统计两次测试的时间差.如果第一个参数为空,这个函数就返回 the
  14.     {elapsed_time} pseudo-variable,它允许整个系统执行的时间展示在模板上,
  15.      输出类会用真实的值来替换它的.
  16.      返回值为混合类型,前两个参数均为字符串,第三个参数为整型.
  17.      */
  18.     function elapsed_time($point1 = '', $point2 = '', $decimals = 4)
  19.     {    
  20.         //如果第一个参数为空,则交给output类去处理,此处只是返回一个记号.
  21.         if ($point1 == '')
  22.         {
  23.             return '{elapsed_time}';
  24.         }
  25.         //如果找不到第一个参数对应的值,则直接返回空字符串.
  26.         if ( ! isset($this->marker[$point1]))
  27.         {
  28.             return '';
  29.         }
  30.         //如果找不到第二个参数对应的值,则取当前时间.
  31.         if ( ! isset($this->marker[$point2]))
  32.         {
  33.             $this->marker[$point2] = microtime();
  34.         }

  35.         list($sm, $ss) = explode(' ', $this->marker[$point1]);
  36.         list($em, $es) = explode(' ', $this->marker[$point2]);

  37.         return number_format(($em + $es) - ($sm + $ss), $decimals);
  38.     }

  39.     
  40.     /**
  41.     内存的使用情况.
  42.     该函数只负责返回一个{memory_usage}字符串,output类会替换它的.
  43.      */
  44.     function memory_usage()
  45.     {
  46.         return '{memory_usage}';
  47.     }

  48. }



阅读(759) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~