我支持并修改遗留的PHP7应用程序。这个应用程序不使用自动加载,而是要求所有类都放在一个文件中,只需要遍历所有包含类的目录。老团队认为这是一种很好的优化方式。
所以我用blackfire做了一些测试,发现这可能会占用一半的cpu时间。我做了自动加载的实验,将cpu时间减少了两倍,内存消耗减少了三倍。很棒的结果。
然后,我在没有自动加载的情况下继续对旧代码进行实验,发现在某些情况下,mega-including不会消耗很多时间(而且它是有很多循环的平面文件,没有if-else语句)。
在blackfire面板中,这看起来像是包含文件具有非常独特的被调用者数量。在一种情况下,该文件具有21个被调用者并且工作132毫秒,在另一种情况下其具有6个被调用者和2.63毫秒。
我不明白为什么会有这样的差异。我的假设是PHP7非常聪明,可以分析哪些类确实应该用字节码编译,哪些不应该。
有人知道为什么会有这样的差异吗?
PS:我不能显示blackfire报告,PM不允许这样做。
发布于 2017-07-18 23:03:01
没有代码或报告是很难猜测的。但我会看一下这一页。也许这里解释的内容存在于您正在审查的代码中。
https://stackoverflow.com/questions/38993379
复制相似问题