PHP效率计:从引号开始(单引号、双引号效率区别)

来源:互联网 发布:iphone4s越狱软件源 编辑:程序博客网 时间:2024/06/05 19:52

一直以来,程序的执行效率就是人们所关注的,在PHP中也不例外,从最简单的引号,也在思考他的效率。
我们特别做了实验,我们自称这个实验可能前无古人,后无来者。
我们的实验是借助最初级的实验方法:累积法和多次实验求平均值。

实验一:在普通情况下的效率
我们的实验是5000次执行10000个字节的文件,获得解析过程中的速度。
首先,本实验特别规定一个单位,这是为了更好地表示以及排除计算机本身效率的差异。
时间单位 TT,表示约 7.2×10[sup]-8[/sup]s 。
我们获得四组实验数据,可理解为表示 'a' 比 "a" 快的时间:
       0.29TT,大概0.0000000206s
       0.46TT,大概0.0000000328s
       0.38TT,大概0.0000000275s
       0.41TT,大概0.0000000292s
平均值:0.39 TT ('aaaa....(139个)' 的效率接近于"aaa...(100个)" 
结论:在数据量相同,并且在普通情况下(不借助转义),使用单引号速度更快。

实验二:单引号转义的效率
我们的实验是5000次分别以「单引号、双引号」执行两份数据相同,但其中一份特别用\'表示单引号。
时间单位 TT,表示约 7.2×10[sup]-8[/sup]s 。
我们获得四组实验数据,可理解为表示 " ' " 比 ' \' ' 快的时间:
       0.19TT,大概0.0000000138s
       0.15TT,大概0.0000000110s
       0.23TT,大概0.0000000162s
       0.24TT,大概0.0000000173s

平均值:0.2 TT (”''''...(12个) " 的效率接近于 '\'\'...(10个)" 
结论:如果字符串中需要表示单引号(MySQL查询),应尽可能避免转义,所以应使用双引号。

实验三:花括号的效率
我们的实验是1000次执行含有数量一定的变量标记的文件,获得解析过程中的速度。
时间单位 TT,表示约 1.581×10[sup]-7[/sup]s~1.666×10[sup]-7[/sup]s 。(TT变化)
得到三组数据,表示 "{$abc}" 比 "$abc" 快。
 
     15.3TT,大概0.0000024186s
 
     14.5TT,大概0.0000024093s
 
     15.3TT,大概0.0000024152s
这数据是十分惊人的,平均结果 
15 TT
这意味着:使用花括号的解析速度,大约是不使用花括号的16倍。
结论:在双引号中表示变量,尽可能使用花括号。

实验四:连续与非连续的效率
我们的实验是1000次执行含有数量一定的变量标记的文件,获得解析过程中的速度。
时间单位 TT,表示约 1.581×10[sup]-7[/sup]s~1.666×10[sup]-7[/sup]s 。(TT变化)
第一组实验数据,表示 "{$abc}{$abc}{$abc}..." 比 $abc.$abc.$abc平均每个变量解析快
 
     22.45TT,大概0.0000035498s
 
     21.03TT,大概0.0000035037s 
 
     22.12TT,大概0.0000034930s
 
    花括号(连续)比单引号(非连续)快的时间,平均结果 22 TT
 
    这意味着:使用花括号的解析速度,大约是使用不连续的单引号的23倍。
 
    结论:在单引号中表示多个变量(或数据总量少),尽可能换用双引用,并使用花括号。
第二组实验数据,表示 "...$abc$abc$abc..." 比 ‘...’.$abc.$abc.$abc.'...'平均每个变量解析快
 
     7.15TT,大概0.0000011311s 
 
     6.57TT,大概0.0000010943s
 
     6.83TT,大概0.0000010777s
 
    双引号(连续)比单引号(非连续)快的时间,平均结果 7 TT。(该数据变化)
 
    这意味着:变量多时,使用双引号(不使用花括号)的解析速度,大约是使用不连续的单引号的8倍。
 
    结论:在双引号中表示多个变量(或数据总量少),比使用单引号而需要用「连接运算符」要快。
结论:表示多个变量时(或数据总量少),应可能范围内使用双引号,并使用花括号。
(附:作者推测,这可能和内存空间的分配有关系,连续符可能会使内存不断调整)

最终结论:
首先,表示简单的数据时(不需要转义),尽量用单引号。
 
  'Cal: Are you good at longjump?'
但如果因为使用单引号,而需要进行转义(即包含单引号),考虑使用双引号。
 
  'Cal: Yes. But, you know,it\'s written.' => "Cal:Yes. But, you know, it's written."
如果需要表示变量,应尽量使用花括号。
 
  "Cal:$to" => "Cal:{$to}, you shouldn't go shopping."
尽量使其连续:
 
  'Cal:'.$calsaid => "Cal:$calsaid" => "Cal:{$calsaid}"

0 0
原创粉丝点击