性能调试

最后更新于:2022-04-02 01:53:52

开发过程中,有些时候为了测试性能,经常需要调试某段代码的运行时间或者内存占用开销,系统提供了`think\Debug`类(实际使用`think\facade\Debug`类即可)可以很方便的获取某个区间的运行时间和内存占用情况。 例如: ~~~ Debug::remark('begin'); // ...其他代码段 Debug::remark('end'); // ...也许这里还有其他代码 // 进行统计区间 echo Debug::getRangeTime('begin','end').'s'; ~~~ 表示统计begin位置到end位置的执行时间(单位是秒),begin必须是一个已经标记过的位置,如果这个时候end位置还没被标记过,则会自动把当前位置标记为end标签,输出的结果类似于:`0.0056s` 默认的统计精度是小数点后4位,如果觉得这个统计精度不够,还可以设置例如: ~~~ echo Debug::getRangeTime('begin','end',6).'s'; ~~~ 可能的输出会变成:`0.005587s` 如果你的环境支持内存占用统计的话,还可以使用`getRangeMem`方法进行区间内存开销统计(单位为kb),例如: ~~~ echo Debug::getRangeMem('begin','end').'kb'; ~~~ 第三个参数使用m表示进行内存开销统计,输出的结果可能是:`625kb` 同样,如果end标签没有被标记的话,会自动把当前位置先标记位end标签。 ### 助手函数 系统还提供了助手函数`debug`用于完成相同的作用,上面的代码可以改成: ~~~ debug('begin'); // ...其他代码段 debug('end'); // ...也许这里还有其他代码 // 进行统计区间 echo debug('begin','end').'s'; echo debug('begin','end',6).'s'; echo debug('begin','end','m').'kb'; ~~~
';