php 简单获取执行时间和占用内存
已经封装好函数了,直接看效果
$st_time = getUseTimeAndMemory()['start_time']; // 开始时间
Db::execute($sql); // 业务逻辑
$r = getUseTimeAndMemory(1,$st_time); // 获取执行时间,所占内存
var_dump('耗时:'.$r['use_time']); // 单位:秒
var_dump('程序当前占用内存:'.$r['cur_memory']);
var_dump('程序占用内存的峰值:'.$r['max_memory']);
打印结果:
下面是封装的函数
// 获取运行时间 和 占用内存
function getUseTimeAndMemory($end = 0,$start_time = 0){
if ($end == 0){ // 获取开始时间
return ['start_time' => microtime(true)];
}else{ // 获取结束时间 和 进程峰值内存
return [
'use_time' => number_format( ( microtime(true) - $start_time ),10,'.','') ,
'max_memory' => formatBytes(memory_get_peak_usage()),
'cur_memory' => formatBytes(memory_get_usage())
];
}
}
// 将memory_get_usage的字节转为MB
function formatBytes($bytes, $precision = 2) {
$units = array("b", "kb", "mb", "gb", "tb");
$bytes = max($bytes, 0);
$pow = floor(($bytes ? log($bytes) : 0) / log(1024));
$pow = min($pow, count($units) - 1);
$bytes /= (1 << (10 * $pow));
return round($bytes, $precision) . " " . $units[$pow];
}