使用 blackfire.io 分析 PHP 7 应用程序,为啥我看到相同代码的不同 cpu 时间?
Posted
技术标签:
【中文标题】使用 blackfire.io 分析 PHP 7 应用程序,为啥我看到相同代码的不同 cpu 时间?【英文标题】:Profiling PHP 7 application with blackfire.io, why i see different cpu time for same code?使用 blackfire.io 分析 PHP 7 应用程序,为什么我看到相同代码的不同 cpu 时间? 【发布时间】:2016-08-17 09:55:23 【问题描述】:我支持和返工旧的 php7 应用程序。此应用程序不使用自动加载,而不是此应用程序需要单个文件中的所有类,只需使用类遍历所有目录。老团队认为这是一种很好的优化方式。
所以我用blackfire做了一些测试,发现这个包括可以消耗一半的cpu时间。我做了自动加载实验,将cpu时间减少了两倍,内存消耗减少了三倍。结果很好。
然后我继续对没有自动加载的旧代码进行实验,发现在某些情况下,巨型包含不会消耗很多时间(而且它是带有很多循环的平面文件,没有 if-else 语句)。
在 blackfire 面板中,看起来包含包含的文件具有非常显着的被调用者数量。在一种情况下,这个文件有 21 个被调用者,工作 132 毫秒,在另一种情况下,它有 6 个被调用者和 2.63 毫秒。
我不明白这种差异的原因。我的假设是 PHP7 非常聪明,可以分析哪些类真正应该编译成字节码,哪些不应该。
有人知道为什么会存在这种差异吗?
PS:我不能显示黑火报告,PM 不允许这样做。
【问题讨论】:
【参考方案1】:没有代码或报告很难猜测。但我会看看这个页面。也许您正在审查的代码中存在那里解释的内容。
https://blackfire.io/docs/24-days/22-php-internals
【讨论】:
以上是关于使用 blackfire.io 分析 PHP 7 应用程序,为啥我看到相同代码的不同 cpu 时间?的主要内容,如果未能解决你的问题,请参考以下文章