PHP层次式性能分析器

2024-02-28 67

在动态Web开发的世界中,优化应用程序的性能是至关重要的。为了深入了解和改善PHP程序的性能表现,开发者们经常依赖于性能分析器。在这些工具中,PHP层次式性能分析器(XHProf)以其轻量级和高效的特点脱颖而出。

一、简介

XHProf 是一款轻量级的性能分析工具,专门设计用于进行分层性能测量和分析。在其数据收集阶段,XHProf 能够详细追踪函数调用的次数和性能指标,同时能够生成展示程序运行时行为的程序动态调用关系图(调用弧线图)。在分析完成后的报告和后期处理阶段,XHProf 会计算关键的性能指标,包括执行时间、CPU 使用时间和内存消耗等独占性能度量。

XHProf 提供了灵活的函数性能报告功能,这些报告可以根据需要从调用者或被调用者的角度来终止。为了有效检测递归函数并防止在调用图中出现无限循环的情况,XHProf 在数据收集时通过循环遍历调用图,并为每次递归调用分配一个唯一的深度标识符。这样,即使是在复杂的递归场景中,XHProf 也能够确保准确且一致的性能数据采集。

XHProf 包含了一个基于 HTML 的简单用户界面(由 PHP 写成)。 基于浏览器的用户界面使得浏览、分享性能数据结果更加简单方便。 同时也支持查看调用图。

XHProf 的报告对理解代码执行结构常常很有帮助。 比如此分层报告可用于确定在哪个调用链里调用了某个函数。

XHProf 对两次运行进行比较(又名 “diff” 报告),或者多次运行数据的合计。 对比、合并报告,很像针对单次运行的“平式视图”性能报告,就像“分层式视图”的性能报告。

二、配置

1、要求

虽然并非必须,但 XHProf 配备了一个由 PHP 编写的用户界面,这大大增强了其实用性。这个界面不仅便于存储分析数据,而且可以在网页浏览器中直观地展示这些数据。因此,在启用了 PHP 的 Web 服务器上使用 XHProf,可以让用户更加便捷地利用其功能,充分体验到性能分析的便利和优势。

2、运行时配置

xhprof.output_dir string:储存 XHProf 运行数据的默认目录,用于接口 iXHProfRuns(即XHProfRuns_Default 类)。

三、预定义常量

下列常量由此扩展定义,且仅在此扩展编译入 PHP 或在运行时动态载入时可用。

  • XHPROF_FLAGS_NO_BUILTINS (int):使得跳过所有内置(内部)函数;
  • XHPROF_FLAGS_CPU (int):使输出的性能数据中添加 CPU 数据;
  • XHPROF_FLAGS_MEMORY (int):使输出的性能数据中添加内存数据。

四、示例

本示例启动并结束性能分析器,然后使用捆绑的用户界面来保存和解析结果。 换言之,扩展的代码在调用 xhprof_disable() 函数后结束。

Xhprof 范例,可选使用图形界面:

<?php
xhprof_enable(XHPROF_FLAGS_CPU + XHPROF_FLAGS_MEMORY);
for ($i = 0; $i <= 1000; $i++) {
$a = $i * $i;
}
$xhprof_data = xhprof_disable();
$XHPROF_ROOT = "/tools/xhprof/";
include_once $XHPROF_ROOT . "/xhprof_lib/utils/xhprof_lib.php";
include_once $XHPROF_ROOT . "/xhprof_lib/utils/xhprof_runs.php";
$xhprof_runs = new XHProfRuns_Default();
$run_id = $xhprof_runs->save_run($xhprof_data, "xhprof_testing");
echo "http://localhost/xhprof/xhprof_html/index.php?run={$run_id}&source=xhprof_testing\n";
?>

以上示例的输出类似于:

http://localhost/xhprof/xhprof_html/index.php?run=t11_4bdf44d21121f&source=xhprof_testing

五、Xhprof函数

  • xhprof_disable — 停止 xhprof 分析器;
  • xhprof_enable — 启动 xhprof 性能分析器;
  • xhprof_sample_disable — 停止 xhprof 性能采样分析器;
  • xhprof_sample_enable — 以采样模式启动 XHProf 性能分析。
  • 广告合作

  • QQ群号:707632017

温馨提示:
1、本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。邮箱:2942802716#qq.com(#改为@)。 2、本站原创内容未经允许不得转裁,转载请注明出处“站长百科”和原文地址。
PHP层次式性能分析器
下一篇: PHP共享缓存Yac