这里给出一些意见和准则。您的情况可能会有所不同:
CPU的计时器( getrusage )在Linux上开销很大。为了在函数级别更有用,这个是粗粒度的(毫秒精确度,而不是微秒水平)。因此,使用XHPROF_FLAGS_CPU模式时,在报告里,数字上的误差往往会更高。 我们建议在生产环境中使用 "占用时间+内存" 来做性能分析。[注:内存性能分析模式的额外开销很低。 ]
// elapsed time profiling (default) + memory profiling
xhprof_enable(XHPROF_FLAGS_MEMORY);
对随机抽样的部分page/request来做性能分析,对于获取您的生产环境的负载情况特征数据,其实足够好了了。
分析万分之一的请求,可以用下面的代码:
if (mt_rand(1, 10000) == 1) {
xhprof_enable(XHPROF_FLAGS_MEMORY);
$xhprof_on = true;
}
request结束时(或是在退出函数中) ,您可以这么做:
if ($xhprof_on) {
// stop profiler
$xhprof_data = xhprof_disable();
// save $xhprof_data somewhere (say a central DB)
...
}
然后,您就可以用xhprof_aggregate_runs()来按时间(比如,每5分钟/每小时/每天),或是按页面类型/request类型来汇总。