真像实验室:PHP性能优化之单引号真的比双引号快吗?
PHP做为WEB开发的第一语言,据各种搜索数据表示,全世界有70%的网站都使用PHP语言。当然做为研发人员,我们经常会使用搜索引擎搜索PHP代码优化,然后会有类似21条PHP开发手册,50条PHP性能优化方法等。
其中大部分会有这么一条:
用单引号代替双引号来包含字符串,这样做会更快一些。因为 PHP 会在双引号包围的 字符串中搜寻变量,单引号则不会
那么事实真的如此吗,笔者使用PHP7.1.12,2核4G的服务器给大家来求个真。
编写代码:
<?php
for ($i=0; $i<100000; $i++) {
$b = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
}
代码很简单,我们for循环10万次,定义变量$b等于528个a, 试验中分别使用单引号执行10次,双引号执行10次并求平均值。
试验数据如下:
次数 | 双引号 | 单引号 |
1 | real 0m0.039s user 0m0.019s sys 0m0.021s | real 0m0.039s user 0m0.015s sys 0m0.023s |
2 | real 0m0.038s user 0m0.016s sys 0m0.022s | real 0m0.039s user 0m0.016s sys 0m0.023s |
3 | real 0m0.039s user 0m0.020s sys 0m0.018s | real 0m0.038s user 0m0.012s sys 0m0.025s |
4 | real 0m0.039s user 0m0.016s sys 0m0.022s | real 0m0.039s user 0m0.021s sys 0m0.017s |
5 | real 0m0.039s user 0m0.018s sys 0m0.021s | real 0m0.039s user 0m0.012s sys 0m0.026s |
6 | real 0m0.039s user 0m0.014s sys 0m0.025s | real 0m0.039s user 0m0.017s sys 0m0.021s |
7 | real 0m0.039s user 0m0.019s sys 0m0.019s | real 0m0.039s user 0m0.017s sys 0m0.023s |
8 | real 0m0.039s user 0m0.015s sys 0m0.024s | real 0m0.039s user 0m0.019s sys 0m0.020s |
9 | real 0m0.039s user 0m0.017s sys 0m0.021s | real 0m0.040s user 0m0.016s sys 0m0.023s |
10 | real 0m0.039s user 0m0.020s sys 0m0.018s | real 0m0.039s user 0m0.023s sys 0m0.015s |
avg. | real: 0m0.039s max 0m0.039s min 0m0.039s user: 0m0.0174s max 0m0.025s min 0m 0.018s sys:0m0.0211s max 0m0.020s min 0m0.014s | real: 0m0.039s max 0m0.040s min 0m0.038s user: 0m0.0168s max 0m0.023s min 0m 0.012s sys:0m0.0216s max 0m0.026s min 0m0.015s |
实验数据显示平均值user时间和sys时间非常接近,没有证据能表明刻意使用单引号程序性能会比双引号快。
而很多公司团队居然一直在将使用单引号提高程序性能做为开发标准之一。
网上的很多性能优化标准是PHP4时代的产物,随着PHP版本和Mysql的更新换代,很多规则已经不适用,做为一名合格的RD,我们应该自己求真,而不是相信充斥在网上的各种别人的总结。