真像实验室:PHP性能优化之单引号真的比双引号快吗?

88223319 2017-12-17

PHP做为WEB开发的第一语言,据各种搜索数据表示,全世界有70%的网站都使用PHP语言。当然做为研发人员,我们经常会使用搜索引擎搜索PHP代码优化,然后会有类似21条PHP开发手册,50条PHP性能优化方法等。

真像实验室: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,我们应该自己求真,而不是相信充斥在网上的各种别人的总结。

真像实验室:PHP性能优化之单引号真的比双引号快吗?

相关推荐