ThinkPHP3.0完全开发手册                                           

 

11.3.2          性能调试

开发过程中,有些时候为了测试性能,经常需要调试某段代码的运行时间或者内存占用开销,系统提供了一些方法可以很方便的获取某个区间的运行时间和内存占用情况。

debug_start  区间调试开始(记录初始时间和内存占用)

用法

debug_start($label='')

参数

label(可选):区间的label标识,默认为空

返回值

debug_end  区间调试结束(记录区间结束时间和内存占用 并输出结果)

用法

debug_end($label='')

参数

label(可选):区间的label标识,默认为空,必须和debug_startlabel对应才能输出正确的区间结果

返回值

注意:debug_startdebug_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是一个字符串,则返回从startend位置的使用时间。

使用示例:

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';


站长教学网 免责声明