0

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

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

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

在 blackfire 面板中,这看起来像包含包含的文件具有非常显着的被调用者数量。在一种情况下,该文件有 21 个被调用者,工作 132 毫秒,在另一种情况下,它有 6 个被调用者和 2.63 毫秒。

我不明白这种差异的原因。我的假设是 PHP7 非常聪明,可以分析哪些类真正应该用字节码编译,哪些不应该。

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

PS:我不能显示黑火报告,PM 不允许这样做。

4

1 回答 1

0

没有代码或报告很难猜测。但我会看看这个页面。也许您正在审查的代码中存在解释的内容。

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

于 2017-07-18T15:03:00.763 回答