xhprof简介

这里给出一些意见和准则。您的情况可能会有所不同:

  • 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类型来汇总。