復制代碼 代碼如下:
/**
* 記錄和統計時間(微秒)和內存使用情況
* 使用方法:
* <code>
* G('begin'); // 記錄開始標記位
* // ... 區間運行代碼
* G('end'); // 記錄結束標簽位
* echo G('begin','end',6); // 統計區間運行時間 精確到小數後6位
* echo G('begin','end','m'); // 統計區間內存使用情況
* 如果end標記位沒有定義,則會自動以當前作為標記位
* 其中統計內存使用需要 MEMORY_LIMIT_ON 常量為true才有效
* </code>
* @param string $start 開始標簽
* @param string $end 結束標簽
* @param integer|string $dec 小數位或者m
* @return mixed
*/
function G($start,$end='',$dec=4) {
static $_info = array();
static $_mem = array();
if(is_float($end)) { // 記錄時間
$_info[$start] = $end;
}elseif(!empty($end)){ // 統計時間和內存使用
if(!isset($_info[$end])) $_info[$end] = microtime(TRUE);
if(MEMORY_LIMIT_ON && $dec=='m'){
if(!isset($_mem[$end])) $_mem[$end] = memory_get_usage();
return number_format(($_mem[$end]-$_mem[$start])/1024);
}else{
return number_format(($_info[$end]-$_info[$start]),$dec);
}
}else{ // 記錄時間和內存使用
$_info[$start] = microtime(TRUE);
if(MEMORY_LIMIT_ON) $_mem[$start] = memory_get_usage();
}
}