【问题标题】:PHP replacing double-quotes with single-quotes when parsing is not required across entire application当整个应用程序不需要解析时,PHP 用单引号替换双引号
【发布时间】:2012-06-06 19:56:53
【问题描述】:

如果我在整个应用程序中有很多引用,例如下面的这段代码 sn-p,我在不需要解析时使用双引号而不是单引号/撇号,会将所有这些双引号替换为单引号-quotes 对我的应用程序的性能有积极影响吗?

$is_parkland = $info["is_parkland"];

我了解在上面的示例中使用 " 是要求 PHP 解析双引号之间的内容。这种事情在我的遗留代码中的应用程序中很明显。

我的应用程序中有大约 300,000 行 PHP,实际上,我很想知道它们是否在必要时被 全部 替换,这会对我的应用程序产生显着或积极的影响?

值得付出努力吗?我正在使用 PHP 5.3.13。

【问题讨论】:

  • 从 5.3 开始,编译器向 RTS 发出相同的操作码序列。所以对于 PHP 5.3.13,这几乎是在浪费时间——你更有可能做出一些有趣的编辑错误并破坏工作代码。

标签: php performance parsing php-5.3


【解决方案1】:

我认为性能差异并不显着。 此外,如果应用程序性能令人满意且负载不高,那么无论如何都不会注意到增益。

【讨论】:

    【解决方案2】:

    PHP 基准测试:

    http://phpbench.com/

    看起来在较新版本的 PHP 中,单引号和双引号之间几乎没有区别。

    【讨论】:

    • 这不是真的,请参阅动态帖子中的 cmets
    • 哪一部分不是真的?查看 PHP 基准测试页面,两者之间的差异很小。事实上,如果你重新加载页面几次,你可以看到它的变化是最快的。从这些基准无法判断一个是否更快。或者正如我最初所说,差别不大。诚然,TerryE 的评论更详细地表明存在 no 差异,但我不明白我错在哪里?
    【解决方案3】:

    单引号的速度比双引号快。数量不多,但使用 300k 行代码可能会产生重大影响。 来源:PHP Benchmark

    【讨论】:

    • 那方面的基准测试并未显示一种类型的性能优于另一种类型。
    • + 103 %single (') quotes. 20 bytes Text and 3x a $ : $tmp[] = 'aa $ aaaa $ aaaa $ a';Total time: 194 µs view code + 105 %double (") quotes. 20 bytes Text and 3x a $ : $tmp[] = "aa $ aaaa $ aaaa $ a";Total time: 197 µs view code 而且……这 3µs 可能仍然落在统计分析的 99% 置信区间内。
    • 如果你使用VLD反汇编比较代码,那么你会发现从PHP 5.3开始,它没有任何区别根本。如果字符串不包含转义变量等,编译器阶段将它们视为完全相同并生成相同的代码。
    猜你喜欢
    • 2018-05-12
    • 2021-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-23
    • 1970-01-01
    相关资源
    最近更新 更多