程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> CI框架源碼閱讀---------基准測試類Benchmark.php

CI框架源碼閱讀---------基准測試類Benchmark.php

編輯:關於PHP編程

 [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   *   * @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       * 用來存儲基准測試類標記的數組       * @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)       {           // 在程序的任意地方調用方法時,會記錄當前的時間點。           $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)       {           /*            * 如果沒有給出明確的時間點,那麼會計算出整個程序運行的時間。           * 怎麼可以做到計算出整個程序的運行時間的呢?其實執行此計算的是Output組件。           * 而調用Benchmark::elapsed_time();(無參數)的時候,實質上先返回的並不是           * 整個程序運行的時間,也不可能做到,實質返回的是一個{elapsed_time}標簽,然後           * Output在處理輸出的時候,再計算出整個程序運行時間,因為處理輸出階段程序可以視           * 為處於最後階段,於是可以近似計算出總時間,然後把輸出中的{elapsed_time}替換掉。           * 下面的memory_usage()原理相同。           */           if ($point1 == '')           {               return '{elapsed_time}';           }              if ( ! isset($this->marker[$point1]))           {               return '';           }              if ( ! isset($this->marker[$point2]))           {               $this->marker[$point2] = microtime();           }              //這裡為什麼要用到list,是因為microtime();返回值是“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 */    

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved