是否可以在PHP中获取特定代码块的峰值内存使用量? memory_get_peak_usage()
函数似乎在整个进程执行期间达到峰值,直到函数调用,但这不是我想要获得的,因为其他代码块可能会使值偏斜。我试图自己隔离代码块,而不是整个过程。
示例:
// Block 1
for ($i = 0; $i < $iterations; ++$i) {
// some code
}
// Block 2
for ($i = 0; $i < $iterations; ++$i) {
// some different code
}
// Determine which of the two blocks used the most memory during their execution here
不幸的是,xdebug目前不适合我。
答案 0 :(得分:-1)
我不知道这样做的具体功能,但是如果你只是试图隔离一段代码就会做一些简单的事情:
$before = memory_get_peak_usage();
for ($i = 0; $i < $iterations; ++$i) {
// some code
}
$after = memory_get_peak_usage();
$used_memory = $after - $before;
答案 1 :(得分:-1)
编辑:XHProf执行此操作,请检查my answer here。
请勿使用memory_get_peak_usage()
:
$alpha = memory_get_usage();
for ($i = 0; $i < $iterations; ++$i) {
// some code
}
$used_memory = memory_get_usage() - $alpha;
请注意,这只会返回// some code
所需的最终内存量。中间内存消耗(例如设置/销毁内容或调用函数)将不计算在内。
你可以使用register_tick_function()
破解你的方式,但它仍然无法用于函数调用。