4

随着 PHP 5.4.x 的最新版本即将发布到 5.5,引入了很多新的语法。我理解它们在代码可读性、程序员更少(呃)输入、错误修复等方面的重要性。

但我特别想知道在使用这些新语法方面性能有多么显着(如果有的话)改进。如果使用更多的新语法,PHP 解释器和/或 Zend 引擎是否执行得更快/更好?

或者我可能错过了重点。需要您对此的专业知识和想法。谢谢!

4

3 回答 3

8

新的语法被添加到一种语言中,使编写程序更容易,使代码更容易组织;通常不会使其表现更好。出于性能原因,您不应该考虑使用特定语法,而是因为它使您的代码更好,更易于使用,更易于阅读等。

例如,PHP 5.5 引入了“生成器”语法(yield关键字)。这是编写迭代器的改进方法。但它不会在编写迭代器风格的代码之间提供任何性能差异;它基本上会在引擎盖下做同样的事情。重要的一点是,编写一个简单的生成器比使用迭代器编写相同的代码要容易得多。代码更短、更整洁、更容易理解。它不会运行得更快,但使用起来会容易得多。这就是重点。

但是,PHP 确实在每次发布时都显着提高了语言的性能。您甚至不需要使用新功能——只需升级到最新版本,您就可以从现有代码中获得性能提升。在某些情况下,性能可以提高 50% 或更多。鉴于此,升级应该是轻而易举的事;能够使用新的语言功能是在性能提升之上的额外奖励。

有很多基准可以证明这一点;这是一个涵盖 PHP v5.1 到 5.4 的示例。

(我还没有看到 v5.5 的良好基准,大概是因为它仍在开发中,但您可以确定基准将在它发布后不久发布)

于 2013-01-03T15:19:07.917 回答
0

这是一个独立于系统的问题。您的里程可能会根据您运行的环境而有所不同。话虽如此,没有明确的方式来说明它是否“更快”。要测试您的特定环境,您必须进行一些代码分析并查看一些 5.4 代码示例与 5.5 代码示例的执行时间。

于 2013-01-03T15:17:31.050 回答
0

我不确定,但我怀疑使用新语法会带来任何重大改进。解析器可能会更快地解析更简洁的新语法,但它会生成与旧版本相同的操作码。这意味着这里的改进几乎不明显。

另一方面,新版本在内部工作方面有所改进,这意味着旧代码和新代码在新引擎上运行得更好

于 2013-01-03T15:26:33.913 回答