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

原文地址:http://blog.sina.com.cn/s/blog_640b03390100sham.html

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

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

实验二:单引号转义的效率
我们的实验是5000次分别以「单引号、双引号」执行两份数据相同,但其中一份特别用‘表示单引号。
时间单位 TT,表示约 7.2×10[sup]-8[/sup]s 。
我们获得四组实验数据,可理解为表示 " ‘ " 比 ‘ ‘ ‘ 快的时间:
         0.19 TT,大概0.0000000138s
         0.15 TT,大概0.0000000110s
         0.23 TT,大概0.0000000162s
         0.24 TT,大概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.3 TT,大概0.0000024186s
       14.5 TT,大概0.0000024093s
       15.3 TT,大概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.45 TT,大概0.0000035498s
       21.03 TT,大概0.0000035037s
       22.12 TT,大概0.0000034930s
       花括号(连续)比单引号(非连续)快的时间,平均结果 22 TT。
       这意味着:使用花括号的解析速度,大约是使用不连续的单引号的23倍。
       结论:在单引号中表示多个变量(或数据总量少),尽可能换用双引用,并使用花括号。
第二组实验数据,表示 "...$abc$abc$abc..." 比 ‘...’.$abc.$abc.$abc.‘...‘ 平均每个变量解析快
       7.15 TT,大概0.0000011311s
       6.57 TT,大概0.0000010943s
       6.83 TT,大概0.0000010777s
       双引号(连续)比单引号(非连续)快的时间,平均结果 7 TT。(该数据变化)
       这意味着:变量多时,使用双引号(不使用花括号)的解析速度,大约是使用不连续的单引号的8倍。
       结论:在双引号中表示多个变量(或数据总量少),比使用单引号而需要用「连接运算符」要快。
结论:表示多个变量时(或数据总量少),应可能范围内使用双引号,并使用花括号。
(附:作者推测,这可能和内存空间的分配有关系,连续符可能会使内存不断调整)

最终结论:
首先,表示简单的数据时(不需要转义),尽量用单引号。
   ‘Cal: Are you good at long jump?‘
但如果因为使用单引号,而需要进行转义(即包含单引号),考虑使用双引号。
   ‘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}"

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

时间: 2024-10-13 01:51:25

[转载]PHP效率计:从引号开始(单引号、双引号效率区别)的相关文章

Python 基础 (单、双引号区别) 不断补充

最近开始学习Python ,一些小细节的东西不是很理解,所以就记录一下,方便自己以后查看. 我的Python环境: Mac pro 10.12.3,Python3.5 ,Pycharm 多句题外话:公司的同事都是Windows开发Python,然后在使用Linux进行配置,由于Mac上默认是python2.7.10的版本,要想开发Python还得需要在Mac多装一个版本的Python,当然也可以用Python自带的进行开发.由于我使用Python3.5.0,所以踩了许多坑,重点是设置环境变量的时

Python中单引号,双引号,3个单引号及3个双引号的区别【转】

http://blog.csdn.net/woainishifu/article/details/76105667 单引号和双引号 在Python中我们都知道单引号和双引号都可以用来表示一个字符串,比如 str1 = 'python' str2 = "python" str1和str2是没有任何区别的. 我们知道Python以其易用性而著名,所以刚开始看教程学习看到单引号和双引号都可以使用会以为这是Python为了方便程序员,随便用哪个就好,不用担心用错.其实,背后的原因不只是这么简单

调用js函数时,参数带单、双引号怎么解决?

单引号    ' ----------> ' 例子: 这是一个 html 节点属性值中使用到  ' 仍然是用来表示 ' 实体 onchange="javascript:setTimeout('abc(\'a\',\'\')', 0)" 等价于 onchange="javascript:setTimeout('abc(\'a\',\'\')', 0)" 除html/xml中表示单引号外, 在某些情况为了防止数据库注入等安全问题. 双引号    " --

对于表单中单双引号问题

1.表单中录入单双引号,将内容通过post传入到后台后,将数据进行转义存入数据库 foreach($_POST as $k => $v){ $_POST[$k] = addcslashes($v,"'\""); } 2.从数据库中取出来显示到页面中,例如那种修改页面的显示,value=“”这样单双引号又是问题,处理如下 value="<?php echo str_replace('"', '"', str_replace("

【python】字符串变量赋值时字符串可用单或双引号

1 >>> name='萧峰' 2 >>> print(name) 3 萧峰 4 >>> name="独孤求败" 5 >>> print(name) 6 独孤求败 7 >>>

php数组下标加单引号、双引号和不加的效率比较

1.数字类型索引的不加. 2.字符串类型的索引必加,优先加单引号. 依据如下 一般情况下都可以,但是当索引为数字时,如果通过$arr['1']则会先将1转换为数字,这样会影响效率 如果为字符串时,那么如果不加引号,如果此时有一个常量和索引值相等,则会将索引转换为常量值.如defined("name","zhangsan")  $arr[name]--->$arr[zhangsan] 因此字符串要加引号,并且由于双引号要解析更多的转义字符和要判断一个值是否为变量

json包含单双引号问题解决方案

原创作品  转载请注明出处 最近项目中  遇到需要JSON传数据  但是某个字段 里面可能含有 双引号和单引号  导致出现错误 为了方便 写了一个工具类,比较好用. 支持"链式编程" 分享给大家 360网盘下载地址:http://yunpan.cn/cjCrRZj9uc8hE  访问密码 79f3 效果DEMO: JsonQuotesUtil.js /** * 解决json传输数据时存在 同时存在单引号和双引号的问题 * * 思路: * 将 单双引号用不容易在字符串中出现的字符分别替换

ASP,VB,JAVASCRIPT 拼HTML时多层单引号双引号嵌套用法,实用(转载)

s.html中的单引号.双引号及其转义使用(转) 收藏   在js中对相关字符做判断或取值,或者拼HTML赋值的时候很多情况下都会用到这些,也是我刚刚遇到的问题,通过参考下面的这篇文章,一切都解决了,摘抄下来做个笔记!呵呵... ------ 在一个网页中的按钮,写onclick事件的处理代码,不小心写成如下:<input value="Test" type="button" onclick="alert(""OK"&q

每日linux命令学习-引用符号(反斜杠\,单引号&#39;&#39;,双引号&quot;&quot;)

引用符号在解析器中保护特殊元字符和参数扩展,其使用方法有3种:反斜杠(\),单引号(''),双引号(""). 单引号和双引号必须匹配使用,均可在解析器中保护特殊元字符和通配符,但是单引号(硬转义)主要用于信息的原样输出,防止任何变量的扩展,双引号(软转义)允许变量扩展.转义符和命令替换.单引号保护双引号,双引号保护单引号. 1. 反斜杠 反斜杠通过解析器将1个字符转化为引用符号或转义. 1)在单引号内使用反斜杠,反斜杠不会被解析,保持原样输出. 2)在双引号内使用反斜杠,主要用于美元符

Linux 命令中的单引号,不加任何参数以及双引号的作用

单引号: 可以说是所见即所得:即将单引号内的内容原样输出,或者描述为单引号里面看到的是什么就会输出什么.单引号''是全引用,被单引号括起的内容不管是常量还是变量者不会发生替换. 双引号: 把双引号内的内容输出出来:如果内容中有命令.变量等,会先把变量.命令解析出结果,然后在输出最终内容来.双引号""是部分引用,被双引号括起的内容常量还是常量,变量则会发生替换,替换成变量内容. 不加引号: 不会将含有空格的字符串视为一个整体输出, 如果内容中有命令.变量等,会先把变量.命令解析出结果,然