Home  >  Article  >  Backend Development  >  CI framework source code reading---------Benchmark test class Benchmark.php_PHP tutorial

CI framework source code reading---------Benchmark test class Benchmark.php_PHP tutorial

WBOY
WBOYOriginal
2016-07-14 10:09:041043browse

[php]

/** 
 * CodeIgniter 
 * 
 * An open source application development framework for PHP 5.1.6 or newer 
 * 
 * @package     CodeIgniter 
 * @author      ExpressionEngine Dev Team 
 * @copyright   Copyright (c) 2008 - 2011, EllisLab, Inc. 
 * @license     http://codeigniter.com/user_guide/license.html 
 * @link        http://codeigniter.com 
 * @since       Version 1.0 
 * @filesource 
 */
//------------------------------------------------ --------------------------
/** 
 * CodeIgniter Benchmark Class 
 * 
 * This class enables 能够 you to mark points and calculate 计算 the time difference 差异 
 * between them.  Memory consumption can also be displayed. 
 * 
 * @package     CodeIgniter 
 * @subpackage  Libraries 
 * @category    Libraries 
 * @author      ExpressionEngine Dev Team 
 * @link        http://codeigniter.com/user_guide/libraries/benchmark.html 
 */
class CI_Benchmark {
/**
* List of all benchmark markers and when they were added
* Array used to store benchmark class tags
* @var array
*/
var $marker = array();
//------------------------------------------------ -----------------------
/** 
     * Set a benchmark marker 
     * 设置一个标记点 
     * Multiple calls to this function can be made so that several 
     * execution points can be timed 
     * 
     * @access  public 
     * @param   string  $name   name of the marker 
     * @return  void 
     */
function mark($name)
{
// When a method is called anywhere in the program, the current time point will be recorded.
$this->marker[$name] = microtime();
}
//------------------------------------------------ -----------------------
/** 
     * Calculates the time difference between two marked points. 
     * 计算出两个时间点之间的时间。 
     * If the first parameter is empty this function instead returns the 
     * {elapsed_time} pseudo-variable 虚假变量. This permits 许可 the full system 
     * execution time to be shown in a template. The output class will 
     * swap the real value for this variable. 
     * 
     * @access  public 
     * @param   string  a particular marked point 
     * @param   string  a particular marked point 
     * @param   integer the number of decimal places 
     * @return  mixed 
     */
function elapsed_time($point1 = '', $point2 = '', $decimals = 4)
{
/*
* If no clear time point is given, the running time of the entire program will be calculated.
* How can we calculate the running time of the entire program? In fact, it is the Output component that performs this calculation.
* When calling Benchmark::elapsed_time(); (no parameters), what is actually returned first is not
* It is impossible to measure the running time of the entire program. What is actually returned is an {elapsed_time} tag, and then
* When Output is processing the output, it calculates the entire program running time, because the program can be viewed during the output processing stage
* Since it is in the final stage, the total time can be approximately calculated, and then the {elapsed_time} in the output can be replaced.
* The principle of memory_usage() below is the same.
*/
if ($point1 == '')
{
Return '{elapset_time}';
} }
if ( ! isset($this->marker[$point1]))
{
            return '';                                      
} }
if ( ! isset($this->marker[$point2]))
{
$this->marker[$point2] = microtime();
} }
//Why list is used here is because microtime(); returns the value in the format of "msec sec".
list($sm, $ss) = explode(' ', $this->marker[$point1]);
list($em, $es) = explode(' ', $this->marker[$point2]);
return number_format(($em + $es) - ($sm + $ss), $decimals);
}
//------------------------------------------------ -----------------------
/** 
     * Memory Usage  
     * 
     * This function returns the {memory_usage} pseudo-variable. 
     * This permits it to be put it anywhere in a template 
     * without the memory being calculated until the end. 
     * The output class will swap the real value for this variable. 
     * www.2cto.com
     * @access  public 
     * @return  string 
     */
function memory_usage()
{
return '{memory_usage}';
}
}
// END CI_Benchmark class
/* End of file Benchmark.php */
/* Location: ./system/core/Benchmark.php */

http://www.bkjia.com/PHPjc/477730.htmlwww.bkjia.comtruehttp: //www.bkjia.com/PHPjc/477730.htmlTechArticle[php] ?php if ( ! defined(BASEPATH)) exit(No direct script access allowed); /* * * CodeIgniter * * An open source application development framework for PHP 5.1.6 or newer * * @packag...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn