在PHP中使用'而不是'真的有影响吗?

时间:2009-12-24 02:34:49

标签: php performance

一个网站,5年人工代码(5位开发人员,大约一年),每天点击数万次。如果我们在可能的情况下将所有“改为”,它真的会产生影响吗?

5 个答案:

答案 0 :(得分:9)

请参阅PHPBench处的 double(“)与单(')引号部分(滚动到页面末尾)。当我调用该页面时,我看到以下内容结果:

Single Quotes: 257 µs
Double Quotes: 232 µs

除非25μs对您的问题域产生影响,否则无关紧要。

我打算在这里尝试数学,如果我犯了错误,有人会纠正我。假设您有10,000个地方,您使用双引号而不是单引号,每页加载25μs差异(谁知道它实际上是否会以这种方式运行,您需要对实际代码进行基准测试)这将是一个执行时间差0.25秒。如果你是Facebook,这可能很重要,具体取决于服务器负载。但是,我怀疑代码库中有许多其他地方资源密集程度要高得多,您甚至需要在查看引号之前进行优化。只要看看PhpBench页面上的痛点,你会看到你应该有不同的优先级。此外,如果您运行不同的PHP实现,如Quercus,这些数字将大不相同 - 这可以解决一些性能瓶颈。

答案 1 :(得分:8)

没有。

正如有人在几周前的PHP微优化问题中指出的那样(我认为这个问题与'对比'相同),实施优化几乎总是花费更多的时间来保存它。

答案 2 :(得分:6)

是的,在您将"$test\n"更改为'$test\n'时,您最终会犯一个错误。

真实数字,不。

答案 3 :(得分:2)

在微优化尝试上花费时间的风险是,可能(或将要识别)代码(以及任何第三方依赖关系)可能/应该被分析,然后重构/优化每工时比例提高效率。

我不能建议您阅读Remember also the rules of Optimization Club

答案 4 :(得分:0)

运行时的性能没有差异。但是编译时存在差异 通常用PHP思考引号的方法是:

  

单引号字符串中的变量未被解析,因此PHP引擎不必浪费时间查找它们。因此,单引号字符串必须更有效

这个假设是错误的,因为PHP引擎在运行时不会执行该ckeck,而是在编译时执行 当PHP解析你的脚本时,如果它找到一个双引号的字符串,里面没有变量,那么该字符串被视为一个常量字符串,即它的值在整个脚本的生命周期内不会改变(如果有的话)里面的变量,然后它被转换为字符串连接) 同样,如果PHP找到单引号字符串,它也会被视为常量。但在这种情况下,PHP不必解析变量的字符串lookng的内容。

因此,您的问题的答案取决于您是否使用PHP缓存解决方案(APC,eAcceleator等...)。如果脚本的编译没有被缓存,那么您可能会略微提高性能,因为每次访问者加载页面时都会编译脚本,因此编译时间很重要。 但是如果缓存了脚本的编译,那么使用单引号和双引号字符串没有区别。