用逗号可以节少echo 的输出时间
解决方案 »
- 手机提交搜索中文全部变成了“Ã¥ÂÂ京”“深峔“广巔
- width与length区别
- mysql如何按单双数结果并类?
- PHP 注入
- 面试题高手帮帮忙看看啊!!!小弟真不会啦啊!!!!!!
- 超级头痛的问题:如何转换%u9999%u8549到中文?
- 如何上传大文件数据?
- MPEG2-TS能不能转换成flash文件
- 散了我最后的分。
- 各位php程序达人进~
- http://127.0.0.1:81/magento2/index.php/install/ 谁能解释一下这人路径啊》文件名+ 路径?
- PHP基础的知识看完后,有什么书适合更深入的研究php``
这个问题我也遇到过,但是网上没有详细说。我觉得:1、逗号可能去输出多个字符串:
如:echo $first,$second,即是:
echo $first;
echo $second;2、而英文句号则是,把多个字符串连接起来再输出。所以,连接起来的时候,可能是这里浪费时间,不知道理解是否正确,呵呵???
echo $first;
echo $second;
这样的写法运行比
echo $first,$second;
更快
echo $first;
echo $second;
是
line op return operands
2 ECHO - !1
3 ECHO - !2echo $first,$second;
是
2 ECHO - !1
2 ECHO - !2echo $first.$second
是
2 CONCAT ~3 !1, !2
ECHO ~3很明显最后一种是最耗时的,因为需要做一次连接(CONCAT)操作,生成一个tmp var(~3)。
但是前面两种我看不出有多少区别,反而是,的只有一个opline,在内存的开销应该会稍微小一些才对。
它内部是如何实现的呢?首先必然是先寻找到了echo,于是有一个类似T_ECHO的token。
然后寻找表达式,直到出现一个不在引号token内的,或者;或者.
如果遇到,,则把表达式结果存储在opline里,直到出现;,然后输出(实际上是进buffer)。难道操作opline要比生成一个opline并且输出到buffer更耗时?嗯,想不通了。。
echo $first.$second; 0.265668
echo $first;
echo $second; 0.188376循环1000000次 挑了一个时间.
大家可以用bench也试一下楼上你说的太深奥了,我听不懂,汗
echo $first,$second; //应该是先输出变量$first,然后再输出变量$second
echo $first.$second; //在这里.号是一个连接运算符,将$first与$second连接成一个字符串之后,再输出。
这样说对不对?