CodeIgniter源码阅读笔记4之Benchmark.php
基准测试类是系统自动加载的,无需用户手动加载。
先贴上代码精简版的Benchmark类
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class CI_Benchmark {
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}';
}
}
整个类比较简单,有一个$marker变量,三个函数,分别来看一下。
marker变量
存储所有的benchmark点的信息。
mark($name)
这个函数只是简单的调用了microtime函数,并把基准点的名称存入了marker数组中。
elapsed_time($point1 = '', $point2 = '', $decimals = 4)
这个函数是计算两个基准点直接的时间差,接受三个参数。
有个注意点是当$point1为空的时候直接返回了一个字符串,这个字符串其实在后面的输出时被替换成了其他的东西,暂时不管。
memory_usage()
同上,只是返回了一个字符串,也是在后面输出时被替换掉了。