这两个版本之间有什么速度差异吗?
<?php echo $var; ?>
<?=$var?>
你推荐哪一个,为什么?
答案 0 :(得分:17)
性能差异微不足道。而且,使用APC,性能差异为零,null,nada。
<?=$var?>
需要激活短标记。短标记在XML中是有问题的,因为<?
也是XML处理标记的标记。因此,如果您正在编写应该是可移植的代码,请使用长格式。
请参阅http://www.php.net/manual/en/ini.core.php
中的short_open_tag
说明
答案 1 :(得分:7)
从技术上讲,解析器必须解析较长版本的每个字符,并且每次传输都会有更多字符。
如果您的网络服务器没有“预编译”(即:缓存标记化的PHP页面),那么性能会略有差异。这可能是微不足道的,除非你开始谈论数十亿次运行。
- 亚当
答案 2 :(得分:6)
表现明智,这是微不足道的。
正确使用说使用较长的一个,因为它更便携。亲身?我做的较短。
答案 3 :(得分:5)
在php 5.3短标签ASP风格&lt; %%&gt;支持将被弃用,请尽量避免这种情况并将代码重写为'<?php echo' format
,因为您无法使用内联<?xml ?>
。
答案 4 :(得分:4)
<?php echo $var; ?>
,否则只需使用<?=$var?>
节省时间。
答案 5 :(得分:3)
我认为第二个需要将short_open_tag(在PHP.ini中)设置为true。
意味着某些网络服务器可能会关闭它。
答案 6 :(得分:3)
您推荐哪种
两者都没有,除非你真的想要允许HTML注入。 (99%的情况下,你没有。)
<?php echo htmlspecialchars($var); ?>
或者使用较短的名称定义一个回显(htmlspecialchars($ arg))的函数,以避免所有输入。
答案 7 :(得分:2)
速度差异取决于您输入9个额外字符的速度 它还可以提高代码的可读性,但这是值得商榷的。
如果你谈论执行速度没有明显的区别。
答案 8 :(得分:1)
不要试图用这些优化,它没用。相反,请停用allow_short_tags(因为加载XML文件时出现问题)并编写干净,可读且易于理解的代码。
即使可能存在轻微差异(肯定低于10%),也可以使用它进行优化。如果脚本很慢,请先查看循环。大多数情况下,通过优化程序流程而不是使用奇怪的语法,您可以赢得更多性能。
答案 9 :(得分:0)
我要添加一个较晚的答案,因为还没有人证明这一点,但是答案很明确地不,没有性能差异,特别是因为完全没有差异 > PHP如何执行这两行代码。
在两种情况下,解释器都可以看到相同代码。解析器会产生完全相同的AST,因为<?=
与<?php echo
基本相同。当您编写<?=
与<?php echo
时,解释器运行的指令没有什么区别。
通过安装php-ast,您可以检查两行代码产生的AST。
鉴于这两种情况...
# CASE 1
<?php echo $i %>
# CASE 2
<?= $i ?>
两者的抽象语法树是相同:
case 1
AST_STMT_LIST
0: AST_ECHO
expr: AST_VAR
name: "i"
case 2
AST_STMT_LIST
0: AST_ECHO
expr: AST_VAR
name: "i"
这意味着PHP 在运行时无法分辨两者之间的区别,别介意遇到某种性能差异。
产生此输出的代码如下,并使用util.php:
<?php
require('util.php');
echo "case 1\n";
echo ast_dump(ast\parse_code('<?php echo $i ?>', $version=50));
echo "\n";
echo "case 2\n";
echo ast_dump(ast\parse_code('<?= $i ?>', $version=50));
echo "\n";
优化与此处无关。选择取决于个人喜好,尤其是由于<?=
始终可用,与短标签无关,从未被弃用,也不打算从该语言中删除。