双引号快还是单引号快?
这么久了, Sunyanzi那一贴还在,
http://bbs.phpchina.com/thread-75331-1-1.html
今天有点无聊, 就自己写个测试验证一下. 由于为了验证我说的与
PHP对代码的解释可能有关, 我还加了eval的测试
<?php
$startTime=microtime(true);
for($i=0;$i<100000;$i++)
{
$str="abcdefg";
}
echo(microtime(true)-$startTime).'<br/>';
$startTime=microtime(true);
for($i=0;$i<100000;$i++)
{
$str='abcdefg';
}
echo(microtime(true)-$startTime).'<br/>';
$n=12345;
$startTime=microtime(true);
for($i=0;$i<100000;$i++)
{
$str="abcdefg$n";
}
echo(microtime(true)-$startTime).'<br/>';
$startTime=microtime(true);
for($i=0;$i<100000;$i++)
{
$str='abcdefg'.$n;
}
echo(microtime(true)-$startTime).'<br/>';
$startTime=microtime(true);
for($i=0;$i<100000;$i++)
{
$str="abcdefg".$n;
}
echo(microtime(true)-$startTime).'<br/>';
$code='$str="abcdefg";';
$startTime=microtime(true);
for($i=0;$i<100000;$i++)
{
eval($code);
}
echo(microtime(true)-$startTime).'<br/>';
$code='$str=/'abcdefg/';';
$startTime=microtime(true);
for($i=0;$i<100000;$i++)
{
eval($code);
}
echo(microtime(true)-$startTime).'<br/>';
$n=12345;
$code='$str="abcdefg$n";';
$startTime=microtime(true);
for($i=0;$i<100000;$i++)
{
eval($code);
}
echo(microtime(true)-$startTime).'<br/>';
$code='$str=/'abcdefg/'.$n;';
$startTime=microtime(true);
for($i=0;$i<100000;$i++)
{
eval($code);
}
echo(microtime(true)-$startTime).'<br/>';
$code='$str="abcdefg".$n;';
$startTime=microtime(true);
for($i=0;$i<100000;$i++)
{
eval($code);
}
echo(microtime(true)-$startTime).'<br/>';
?>
上面几局的测试结果确说明了, 单引号和双引号基本上打了个
平手.
下面几组数据可以看出:
1. 没有字符串运算时, 双引号会比单引号快.
2. 字条串运算时, 点运算会比把变量放字符串中变量解析要快.
3. 单引号的点运算比双引号的要快.
4. 与PHP解释器关系不大, 这里面还是显示不出来的, 因为混合了解释和运行.
这个测试并不全, 还有其它的一些字符串运算什么的并没有测试.
但这两个的差别并不大, 没有必太在意.
我平时不使用字符串中的变量解析是正确的, 呵呵.
其实最权威的, 应该就是去分析PHP内部的底层实现
测试数据:
在Windows+PHP 5.0.3上的几次运行是:
0.27670001983643
0.25486898422241
0.83552312850952
0.5403790473938
0.61156487464905
3.5633230209351
4.0468211174011
5.4794728755951
5.162703037262
5.2686080932617
0.26723599433899
0.27146911621094
0.91069102287292
0.54524993896484
0.52312111854553
3.7256860733032
3.8976519107819
5.4559509754181
5.1765241622925
5.0928680896759
0.25474405288696
0.41273498535156
0.828125
0.53493118286133
0.5132520198822
3.6762130260468
3.7722110748291
5.7543988227844
5.1174530982971
5.1295909881592
0.34656405448914
0.34093809127808
0.82421398162842
0.52259612083435
0.54078412055969
3.7371120452881
4.0165131092072
6.2756278514862
5.149160861969
5.1098229885101
因为电脑开的东西比较多, 所以不是很稳定, 所以我在我的那台老服务器上再测试了一下
在Linux+PHP5.2.6上运行的:
0.15142297744751
0.15228891372681
0.5031898021698
0.41921186447144
0.42355895042419
3.6749489307404
3.6847870349884
5.0727529525757
4.9702169895172
5.0212202072144
0.15987920761108
0.15132212638855
0.5018630027771
0.42221403121948
0.41986584663391
3.7770829200745
3.8762919902802
5.2167918682098
4.9593789577484
5.2258479595184
0.15197515487671
0.15146517753601
0.50336003303528
0.42050099372864
0.42192983627319
3.6611430644989
3.9000358581543
5.2399659156799
5.0650207996368
5.2298748493195
0.15134716033936
0.15146493911743
0.50819110870361
0.42084789276123
0.4211699962616
3.7595019340515
3.7688369750977
5.3811690807343
5.0485820770264
5.1331651210785
分享到:
相关推荐
ASP中使用SQL时关于&、双引号、和单引号的解释及关于Insert字符串的方法
单引号和双引号 截然不同,单引号 表示 字符,双引号 表示 字符串。 Python语言 两者都可以用,不用区别,都是字符串。 Matlab语言 早期的版本,只能用 单引号,表示的是字符串。双引号用不成,会报错。 从 R2017a ...
SQL中存储过程中SQL语句的单引号和双引号问题[总结].pdf
php单引号和双引号的区别
asp单引号双引号.doc下面先简单地说一下他们的意义。 (1)&是连接运算符,它可以将两个字符串连接成一个字符串。 如 a="abc" & "def" 执行连接运算后,a="abcdef"。 再如 a="abc" & temp 注意,这里temp是...
sql server 默认是用单引号标识字符串的,但有很多时候需要用双引号,例如字符串里本来就包含单引号的时候。但往往设置不允许使用双引号,该解决方案一条语句就搞定双引号问题设置。
ASP中有关双引号,单引号以及&号的解释的总结解释。
1.双引号替换成单引号 var _adrobj = JSON.stringify(address).replace(/\"/g,"'");ps: var a = {a:1,b:2}; JSON.stringify(a)====>"{"a":1,"b":2}" 2.单引号替换成双引号 var _nstr = _adrdata.replace(/'/g, '...
使用PHP脚本语言进行开发,什么时候用单引号、什么时候使用双引号对运行效率至关重要,想学习如何在PHP中区分单双引号的使用,请下载此文档,希望对需要的朋友带来帮助,谢谢。
PHP双引号与单引号的区别,很多人认为php双引号单引号一样,其实还是有区别的
4.5 Python核心基础知识之单引号、双引号、三引号与转义字符串.mp4
linux操作系统 redhat 命令 awk 单引号和双引号的区别
php中字符串类型标记 双引号、单引号的区别.zip
详细解释了linux系统命令行和脚本编程中的引号的使用,对于命令运行机制的理解很有帮助
个人开发的一款JS拼接工具,代码挺简单的,不过挺实用,欢迎大家测试,向我提出bug。 主要应用在JS拼接,省去了你直接打单引号或者双引号的痛苦。
1.示例 Shell在使用的过程中,经常会使双引号或者单引号将字符串括起来,也可以不使用引号来定义字符串变量。...单引号是全引用,被单引号括起的内容不管是常量还是变量都不会发生替换。 var=dablelv ec
您可能感兴趣的文章:简单概括PHP的字符串中单引号与双引号的区别PHP中单引号与双引号的区别分析PHP 单引号与双引号的区别php 输出双引号"与单引号”的方法PHP的单引号和双引号 字符串效率浅谈PHP中单引号和双引号...
单引号解析的时间比双引号快 。 单引号支持\转义符,双引号支持的转义符更多 。 $hello= 3; echo "hello is $hello"; // 打印结果:hello is 3 echo 'hello is $hello'; // 打印结果: hello is $hello echo "hello ...
在PHP中,我们可以使用单引号或者双引号来表示字符串。不过我们作为开发者,应该了解...单引号与双引号对于定义字符一个是可以解析变量一个是会把变量直接输出来,同时单引号与双引号在字符处理上单引号要优与双引号