6

目前,我正在使用xdebug profiler& KCacheGrind。但是 GallGrind 格式不存储完整的调用跟踪,只存储父子调用跟踪(看看Kcachegrind/callgrind is inaccurate for dispatcher functions?我在说什么。)

是否有可用于 PHP的具有可视化功能的分析器以及完整的回溯可视化?

我看过

4

2 回答 2

3

几个月前,我不得不为以前的项目做一些主要的 PHP 分析。

我能找到的最好的选择是 facebook 的xhprofxhprof-ui

在此处阅读有关如何安装它们的信息:

http://blog.preinheimer.com/index.php?/archives/355-A-GUI-for-XHProf.html

一些优点:

  • 易于使用的界面
  • 数据库后端保存以前的分析会话
  • 漂亮的书法
于 2012-01-10T21:13:03.677 回答
1

如果您只想查看分析器输出,那是一回事。如果您正在尝试优化您的代码,请不要忘记此方法。我知道你可以在 xdebug 中做到这一点。

它基于一个非常简单的想法。假设你的程序做的比它需要的多,所以它可以被加速。实际上假设,为了争论,它做的比它需要做的多 9 倍,所以如果它应该花 1 秒,它实际上需要 10 秒。那些 9 秒的不必要的工作可能会或可能不会被彻底混合,比如糖和面粉。

好的,在这 10 秒内,您只需按 ^C 即可停止它,然后您仔细查看它当时在做什么。

你发现它做浪费的事情的概率是多少?实际上,您不太可能没有发现它在做浪费的事情。

如果您不确定,请重复。

浪费不必那么大。事实上,如果你一直这样暂停它,只要你看到它不止一次地做某事,如果它是你可以摆脱的东西,你会得到很好的加速,保证。

例如,如果你暂停它 5 次,并且你看到它在其中 2 次做一些它实际上不需要做的事情,你能节省多少?你不完全知道,它会在 40% 左右。它可能小到 20%。它可以很容易地达到 60%。所以你不知道它会节省多少,但你不会因为你不确定它有多重就扔掉一块金块。

最后,分析器可以发现这不会有问题。反之则不成立。

于 2012-01-10T23:16:24.670 回答