至于如何使用, 请看这个
<?php function a(){ echo 'a'; } xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY); //XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY // run program for($a=1;$a<=100;$a++) { a(); } // stop profiler $xhprof_data = xhprof_disable(); //返回运行数据 // 下面是保存运行数据 include_once "xhprof/xhprof_lib/utils/xhprof_lib.php"; include_once "xhprof/xhprof_lib/utils/xhprof_runs.php"; $xhprof_runs = new XHProfRuns_Default(); $run_id = $xhprof_runs->save_run($xhprof_data, "sourcejoy"); //第一个参数是 xhprof_disable()函数返回的运行信息,第二个参数是自定义的命名空间字符串(任意字符串),返回运行ID。 echo "<a href='/xhprof_html/index.php?run=".$run_id."&source=sourcejoy'>view</a>"; ?>
这里说一下, 其实xhprof的原理就是根据堆栈调用打印出信息, 然后以流的形式放在一个文件中, 这里是xxxxxx.sourcejoy, 然后,你用过xhprof提供的xhprof_html工程来解读这个文件, 就是将它变成可视化的界面, (xhprof_html文件夹也是xhprof提供的)
效果如下:
名词:
Function Name 函数名
Calls 调用次数
Calls% 调用百分比
Incl. Wall Time (microsec) 调用的包括子函数所有花费时间 以微秒算(一百万分之一秒)
IWall% 调用的包括子函数所有花费时间的百分比
Excl. Wall Time (microsec) 函数执行本身花费的时间,不包括子树执行时间,以微秒算(一百万分之一秒)
EWall% 函数执行本身花费的时间的百分比,不包括子树执行时间
Incl. CPU(microsecs) 调用的包括子函数所有花费的cpu时间。减Incl. Wall Time即为等待cpu的时间
减Excl. Wall Time即为等待cpu的时间
ICpu% Incl. CPU(microsecs)的百分比
Excl. CPU(microsec) 函数执行本身花费的cpu时间,不包括子树执行时间,以微秒算(一百万分之一秒)。
ECPU% Excl. CPU(microsec)的百分比
Incl.MemUse(bytes) 包括子函数执行使用的内存。
IMemUse% Incl.MemUse(bytes)的百分比
Excl.MemUse(bytes) 函数执行本身内存,以字节算
EMemUse% Excl.MemUse(bytes)的百分比
Incl.PeakMemUse(bytes) Incl.MemUse的峰值
IPeakMemUse% Incl.PeakMemUse(bytes) 的峰值百分比
Excl.PeakMemUse(bytes) Excl.MemUse的峰值
EPeakMemUse% EMemUse% 峰值百分比