随着最新版本的PHP 5.4.x即将推出5.5,已有不少new syntax引入。我理解它们在代码可读性方面的重要性,程序员输入的更少(错误),错误修复等。
但我特别热衷于了解在使用这些新语法方面性能有多大(如果有的话)。如果使用更多新语法,PHP解释器和/或Zend引擎的执行速度是否更快/更好?
或者可能是我错过了重点。需要您的专业知识和想法。谢谢!
答案 0 :(得分:8)
为语言添加了新语法,使编写程序更容易,并使代码更易于组织;通常不会让它表现得更好。您不应该考虑出于性能原因而使用特定语法,而是因为它使您的代码更好,更易于使用,更易于阅读等。
例如,PHP 5.5引入了“Generator”语法(yield
关键字)。这是编写迭代器的改进方法。但它不会在编写迭代器式代码之间提供任何性能差异;它基本上都是在引擎盖下做同样的事情。重要的是,编写简单的生成器要比使用迭代器编写相同的代码容易得多。代码更短,更整洁,更容易理解。它不会运行得更快,但它将更容易使用。这就是重点。
然而,PHP确实有很好的记录,可以显着提高每个版本的语言性能。您甚至不需要使用新功能 - 只需升级到最新版本,您就可以从现有代码中获得性能提升。在某些情况下,性能可提高50%或更多。鉴于此,升级应该是一个明智的选择;能够使用新语言功能是在性能提升之上的额外奖励。
有很多基准来证明它; here's one example涵盖PHP v5.1到5.4。
(我还没有看到v5.5的良好基准,大概是因为它仍然在使用,但你可以确定基准测试将在它发布后不久发布)
答案 1 :(得分:0)
这是一个独立于系统的问题。您的里程可能会根据您运行的环境而有所不同。话虽如此,没有明确的方式来说明它是否“更快”。要测试您的特定环境,您必须进行一些代码分析,并查看5.4代码示例与5.5代码示例的执行时间。
答案 2 :(得分:0)
我不确定,但我怀疑使用新语法会增加任何重大改进。解析器可能会更快地解析terser新语法,但它会生成与旧版本相同的操作码。这意味着这里的改进几乎不可察觉。
另一方面,新版本在内部工作方面有所改进,这意味着较旧和较新的代码在较新的引擎上运行得更好