使用blackfire分析PHP 7应用程序.为什么我看到相同的代码不同的CPU时间



我支持和返工遗留的PHP7应用程序。这个应用程序不使用自动加载,而不是这个应用程序要求所有的类在一个文件中,只是遍历所有目录的类。老团队认为这是一个很好的优化方法。

所以我用blackfire做了一些测试,发现这可以消耗一半的cpu时间。我用自动加载做了实验,两次减少了cpu时间,三次减少了内存消耗。伟大的结果。

然后我继续对没有自动加载的旧代码进行实验,发现在某些情况下,mega- include并不会消耗很多时间(而且它是平面文件,有很多循环,没有if-else语句)。

在blackfire面板中,这看起来像包含有非常不同数量的被调用者的文件。在一种情况下,这个文件有21个调用,工作时间为132毫秒;在另一种情况下,它有6个调用,工作时间为2.63毫秒。

我不明白为什么会有这样的差异。我的假设是PHP7非常聪明,可以分析哪些类真的应该用字节码编译,哪些不应该。

有人知道为什么存在这样的差异吗?

PS:我不能展示blackfire报告,PM不允许。

没有代码或报告是很难猜测的。但我想看看这一页。也许你正在审查的代码中就存在这里解释的内容。

https://blackfire.io/docs/24-days/22-php-internals

最新更新