资讯专栏INFORMATION COLUMN

简杰的php编程分享-1.3 xdebug性能分析

Michael_Lin / 2427人阅读

摘要:生成性能分析文件,再通过分析软件进行查看性能结果。性能分析工具详解我们通过打开性能分析文件打头的文件。可以很好的区分性能分析文件。

介绍

在上两期中我已经对 xdebug 最核心的操作已经进行了讲解。相信你可以摆脱写 var_dump($data);die; 的编写和完成调试后的清除了。这一期我们来学习xdebug的第二个特色-性能分析。这一个功能,在实操中用的不是很多。

使用场景:

高并发项目的核心功能优化。通过查看运行一个方法经过的依赖耗时情况,进行代码优化。

环境说明

windows

vagrant+vbox+centos7+nginx+php

phpstorm

学前准备

xdebug + phpstorm 调试环境已经可以正常运行

学习点

明白 xdebug 性能分析需要做那些配置

知道怎么去看性能报告

xdebug 配置

xdebug 是通过访问指定方法。生成性能分析文件,再通过分析软件进行查看性能结果。

php.ini 添加配置

xdebug.profiler_enable=Off
xdebug.profiler_enable_trigger=On
xdebug.profiler_enable_trigger_value="create"
xdebug.profiler_output_dir="/tmp/"
xdebug.profiler_output_name="cachegrind.out.%R"
phpstorm 分析性能文件

比较建议一个方法访问完后,生成分析文件,马上进行性能分析,分析完后再清除文件。为了数据准确性,我们还需要进行多次对比。找性能参数的平均值来提高准确性。

我们得知道那个依赖方法耗时最久,是什么原因。有没有优化的可能。

phpstorm xdebug 性能分析工具详解

我们通过 tool -> Analyze Xdebug profiler Snapshot 打开性能分析文件 cachegrind.out. 打头的文件。就会进入以下界面

1、了解各个选项的意思

Refresh - 刷新

Execution statistics - 执行统计数据

Call Trees - 哪个函数调用哪个函数

Callable - 已执行的文件

Own Time - 函数执行自己的代码所花费的时间(不包括对其他函数的调用)

Calls - 调用次数

Callees - 调用哪些函数

Callers - 从函数被调用的地方

time 前的数字代表的是什么意思

time 列里有 数字和百分比。分别代表 执行时间和执行占用总时间百分比

单位是 server 旁边的 time 那里进行设置.默认是 ms

callees 里的方法大部分都会出来一个折叠的图标,有什么用

这个可以让我们查看他的上一步执行了以什么操作。这个可以方便我们在了解调用到这个函数的过程。

2、找到我们关心的数据

那些地方占用的执行时间最多,为什么

我们可以在 Execution statistics 标签里对 own time 进行排序取执行占用最多的内容。里面会包含文件和函数以及方法。如果我们设置了 server 关联当前的项目,统计里的方法是可以进行跳转到项目的实际代码里。

我们通过 Callees 标签查看函数里那些方法调用耗时最多

那些方法调用最多次,在那些地方调用的比较多

Execution statistics 标签里对 calls 进行排序取执行次数最多的函数或方法。

可通过下面的 Callers 查看那些地方对他进行了调用

系列文章

xdebug的安装配置

xdebug的实际运用

xdebug性能分析 [本篇]

FQA

为什么要设置 xdebug.profiler_output_name 默认的不就可以了吗?

如果你的项目不是多入口的类型,你保存的到一个文件就会出现性能分析文件不精确的情况。而我在上文中用的是 $_SERVER["REQUEST_URI"] 作为文件后缀。可以很好的区分性能分析文件。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/30884.html

相关文章

  • 杰的php编程分享-1.1 xdebug的安装配置

    摘要:当我在官网看到了远程调试原理图时,我才知道应该怎么配置。配置的参数也少了很多,也不需要在里对一个个请求地址进行配置。其他可以配置可以共用。但是如果你使用的是本地的那他就会出现端口被占用的情况。 介绍 我之前配置直接按网上的文章进行配置总是配置不成功,里面很多东西不了解。当我在 xdebug 官网看到了 xdebug 远程调试原理图时,我才知道应该怎么配置 xdebug。配置的参数也少了...

    import. 评论0 收藏0
  • 杰的php编程分享-1.2 xdebug的实际运用

    摘要:单击此按钮可暂停程序执行。单击此按钮,通过标准关闭脚本从外部终止当前进程。实际上,插入符号处的当前行有一个临时断点集,一旦程序执行暂停,就会删除它。心中始终十分抗拒,导致功能变更延期。 介绍 在 上一期 中我们已经把 xdebug 和 phpstorm 的关联配置设置好了,接下来我将会深入的介绍 debug 的运用。分为3点内容 快速找到错误的原因 辅助读懂比效复杂的代码 代码重构 ...

    ls0609 评论0 收藏0
  • PHP小知识点

    摘要:那些琐碎的知识点作者记录的的很奇特很难记的知识点。易错知识点整理注意和的区别中和都是输出的作用,但是两者之间还是有细微的差别。今天手头不忙,总结一下,分享过程中掌握的知识点。 深入理解 PHP 之:Nginx 与 FPM 的工作机制 这篇文章从 Nginx 与 FPM 的工作机制出发,探讨配置背后的原理,让我们真正理解 Nginx 与 PHP 是如何协同工作的。 PHP 那些琐碎的知识...

    hover_lew 评论0 收藏0
  • PHPUnit 加速技巧分享

    摘要:接下来我们将会介绍一些可以快速实现的小技巧,让你的代码测试变得更快。该示例测试套件有意地模拟更广泛的测试集合,并突出改进的可行性。真实情况下,效率的提升可能有所差异。我认为相比通过提升一点速度带来的好处,保持生产环境一致更重要。 showImg(https://segmentfault.com/img/remote/1460000017962057?w=1440&h=736); 具备高...

    weizx 评论0 收藏0
  • UCloud怪兽主机再升级 新快杰3+1让超强算力即刻可得

    摘要:快杰云主机发布款全新机型在去年大会上,云主机团队推出了万网络性能万存储性能的快杰云主机。但同时价格则与上一代快杰持平,升频不加价。其中在的跑分中,快杰与上代快杰相比算力提升。除了上述三款性能主机外,上还发布了采用处理器的快杰型预览版。10月23日以构建·创见|为主题的UCloud用户大会暨Think in Cloud 2020(以下简称TIC)在上海召开。在本次大会上,UCloud推出了历经...

    Tecode 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<