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];
}

 

posted @ 2022-08-26 17:42  jaychou、  阅读(375)  评论(0编辑  收藏  举报