CodeIgniterコアコード読解-モニタファイルBenchmark.php

2938 ワード

Benchmark.php----ベンチマークテストクラス
<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class CI_Benchmark {

	
	var $marker = array();

	//    
	function mark($name)
	{
		$this->marker[$name] = microtime();
	}

	//    
	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();
		}

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

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

	//    
	function memory_usage()
	{
		return '{memory_usage}';
	}

}

試験基準クラスは、コントローラ、ビュー、またはモデルであるもよい.で使用します.
開始点をマーク
終了点をマーク
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');

注意:単語「code_start」と「code_end」は任意で、2つのタグとして簡単な単語です.使用したい単語を使用して、複数のタグを設定することができます.次のコードを参照してください.
$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');

基準データが評価に有効である場合は、タグポイントをペアに設定し、各タグポイントを_startと_エンディング各一対のマークポイントの前部は同じである必要がある.例:
$this->benchmark->mark('my_mark_start');

// Some code happens here...

$this->benchmark->mark('my_mark_end'); 

$this->benchmark->mark('another_mark_start');

// Some more code happens here...

$this->benchmark->mark('another_mark_end');

CodeIgniterでphpのタグポイント:
$BM =& load_class('Benchmark', 'core');
$BM->mark('total_execution_time_start');
$BM->mark('loading_time:_base_classes_start');
$BM->mark('loading_time:_base_classes_end');
$BM->mark('controller_execution_time_( '.$class.' / '.$method.' )_start');
$BM->mark('controller_execution_time_( '.$class.' / '.$method.' )_end');

コントローラの実行にかかる時間:
echo $BM->elapsed_time('total_execution_time_start', 'controller_execution_time_( '.$class.' / '.$method.' )_end');