2011-11-19 53 views
0

可能重复:
php echo vs open&close tag回声比使用回声慢吗?

例如。是这样的:

<p>Hello welcome to my site</p> 
<p>Your name is <? echo $name; ?>!</p> 
<p>Your age is <? echo $age; ?>!</p> 
<p>Your email address is <? echo $email; ?>!</p> 

比这更快或更慢:

<? 
echo "<p>Hello welcome to my site</p>"; 
echo "<p>Your name is " . $name . "!</p>"; 
echo "<p>Your age is " . $age . "!</p>"; 
echo "<p>Your email address is " . $email . "!</p>"; 
?> 

如果网站没有获得数以百万计的页面浏览量......?

+1

是真的有争议... http://www.phpbench.com/ – ajreal

+0

我假设产生字符串,然后在最后有一个回声会更好,但是这需要测试。 –

+0

感谢您的链接ajreal – supercoolville

回答

3

第一代码片段收益率这个Zend公司代码:

ECHO '%3Cp%3EHello+welcome+to+my+site%3C%2Fp%3E%0A%3Cp%3EYour+name+is+' 
ECHO !0 
ECHO '%21%3C%2Fp%3E%0A%3Cp%3EYour+age+is+' 
ECHO !1 
ECHO '%21%3C%2Fp%3E%0A%3Cp%3EYour+email+address+is+' 
ECHO !2                      ECHO '%21%3C%2Fp%3E%0A' 

,第二个:

ECHO '%3Cp%3EHello+welcome+to+my+site%3C%2Fp%3E' 
CONCAT ~0 '%3Cp%3EYour+name+is+', !0 
CONCAT ~1 ~0, '%21%3C%2Fp%3E' 
ECHO ~1 
CONCAT ~2 '%3Cp%3EYour+age+is+', !1 
CONCAT ~3 ~2, '%21%3C%2Fp%3E' 
ECHO ~3 
CONCAT ~4 '%3Cp%3EYour+email+address+is+', !2 
CONCAT ~5 ~4, '%21%3C%2Fp%3E' 
ECHO ~5 

由此我得出结论,第一个变体实际上是更快,因为没有多余的字符串复制由于CONCAT的。

+0

您是如何制作的?似乎我的理解有一个基本的差距! –

+0

这通常通过xdebug优化虽然 – Evert

+0

@Rich Bradshaw我已经使用VLD php扩展。见http://pecl.php.net/package/vld – arrowd

0

即使拥有数百万的页面浏览量,使用echo的机会也不会成为任何网站性能的瓶颈。如果该网站具有更复杂的组件(例如数据库查询),那么首先优化它们会更有利。

5

请注意不成熟的优化和微观优化。虽然一方可能比另一方更快,但两者速度都很快,所以在大多数实际情况下,差异可能会变得无关紧要。

机会是数据库访问中代码的最大瓶颈。在大多数项目中,情况通常如此。优化您的查询以便快速运行并仅返回相关数据,并优化代码以仅查询需要的时间,并且缓存结果以避免重复查询,这比返回来自PHP的转义回声的性能要好得多。

从个人的角度来说,我倾向于倾向于逃离PHP,并在纯粹的美学原因下尽可能使用HTML,即IDE可以识别HTML标记并为我突出显示它。对于团队中不熟悉PHP的设计人员来说,这也会让生活变得更轻松。