我支持和返工遗留的 PHP7 应用程序。此应用程序不使用自动加载,而不是此应用程序需要单个文件中的所有类,只需使用类遍历所有目录。老团队认为这是一种很好的优化方式。
所以我用blackfire做了一些测试,发现这个包括可以消耗一半的cpu时间。我做了自动加载实验,将cpu时间减少了两倍,内存消耗减少了三倍。伟大的结果。
然后我继续在没有自动加载的情况下使用旧代码进行实验,发现在某些情况下巨型包含不会消耗很多时间(而且它是带有很多循环的平面文件,没有 if-else 语句)。
在 blackfire 面板中,这看起来像包含包含的文件具有非常显着的被调用者数量。在一种情况下,该文件有 21 个被调用者,工作 132 毫秒,在另一种情况下,它有 6 个被调用者和 2.63 毫秒。
我不明白这种差异的原因。我的假设是 PHP7 非常聪明,可以分析哪些类真正应该用字节码编译,哪些不应该。
有人知道为什么存在这种差异吗?
PS:我不能显示黑火报告,PM 不允许这样做。