ThinkPHP3.0完全开发手册
开发过程中,有些时候为了测试性能,经常需要调试某段代码的运行时间或者内存占用开销,系统提供了一些方法可以很方便的获取某个区间的运行时间和内存占用情况。
debug_start 区间调试开始(记录初始时间和内存占用) |
|
用法 |
debug_start($label='') |
参数 |
label(可选):区间的label标识,默认为空 |
返回值 |
无 |
debug_end 区间调试结束(记录区间结束时间和内存占用 并输出结果) |
|
用法 |
debug_end($label='') |
参数 |
label(可选):区间的label标识,默认为空,必须和debug_start的label对应才能输出正确的区间结果 |
返回值 |
无 |
注意:debug_start和debug_end 方法中的内存占用输出需要环境支持memory_get_usage方法,否则只会显示时间信息。
使用示例:
debug_start('run');
$blog = D("Blog");
$blog->select();
debug_end('run');
会输出下面的运行信息:
Process run: Times 0.007730s Memories 76 k
如果仅仅需要调试时间开销,还可以使用内置的G函数来更方便实现
G 用于记录和统计时间(微秒) |
|
用法 |
G($start,$end='',$dec=4) |
参数 |
start(必须):起始位置标识 end(可选):记录结束标记并统计时间 dec(可选):调试时间的统计精度,默认为小数点后4位 |
返回值 |
如果end为空或者是一个浮点数, 无返回值。 如果end是一个字符串,则返回从start到end位置的使用时间。 |
使用示例:
G('run');
$blog = D("Blog");
$blog->select();
echo G('run','end').'s';
除了上面的 函数外,系统还提供了一个扩展调试类Debug
Debug::mark 标记调试位(并记录该位置的时间和内存占用) |
|
用法 |
Debug::mark($name) |
参数 |
name(必须):调试标记位的name标识 |
返回值 |
无 |
Debug::useTime 统计区间标记调试位的使用时间 |
|
用法 |
useTime($start,$end,$decimals = 6) |
参数 |
start(必须):调试开始位置标识 end(必须):调试结束位置标识 decimals(精度):调试时间的统计精度默认为小数点后6位 |
返回值 |
区间位置的使用时间(字符串) |
Debug::useMemory 统计区间标记调试位的内存占用 |
|
用法 |
useMemory($start,$end) |
参数 |
start(必须):调试开始位置标识 end(必须):调试结束位置标识 |
返回值 |
区间位置的内存占用(字符串) |
Debug::getMemPeak 统计区间标记调试位的内存占用峰值 |
|
用法 |
getMemPeak ($start,$end) |
参数 |
start(必须):调试开始位置标识 end(必须):调试结束位置标识 |
返回值 |
区间位置的内存占用峰值(字符串) |
要使用Debug类调试的话,首先需要导入Debug类,Debug类位于扩展目录下面的Library/ORG/Util/Debug.class.php ,所以首先要导入:
import('ORG.Util.Debug');
Debug::mark('run');
$blog = D("Blog");
$blog->select();
Debug::mark('end');
echo Debug::useTime('run','end').'s';
echo Debug::useMemory('run','end').'kb';