php / templating vs echoing

时间:2011-11-17 03:44:16

标签: php performance template-engine

我想知道哪一个最适合表现:

1-使用smarty模板(或任何其他更好的)

<?php
$Smarty = new Smarty();
// set all the default variables and other config
$Smarty->assign('var1', 'hello');
$Smarty->assign('var2', 'world');
$Smarty->display('page.html');

2-使用此代码:

<?php
$var1 = 'hello';
$var2 = 'world';
echo "$var1 $var2";

3-使用此代码:

<?php
$var1 = 'hello';
$var2 = 'world';
echo $var1 . " " . $var2;

基于这三个例子,我不能考虑一个新的,一个最好在性能时使用

注意:当然我有比这个例子更多的变量。

感谢

2 个答案:

答案 0 :(得分:11)

据我所知,连接PHP变量(如第三个示例中所示)比使用"$var1 $var2"更快,因为每个令牌都是动态评估(这很糟糕),因此混合了变量和常量字符串。

所以,在2到3之间,我认为它取决于上下文:如果你有一个包含变量和常量混合的长字符串,那么方法3会更快。否则,如果它与你的例子相同,那么2可能更快(然而,差异可以忽略不计,因此应该是一个有争议的点)。

使用模板引擎总是比原始代码慢。


现在如果你没有非常好的理由不使用模板引擎,你应该使用一个。为什么呢?

  • 关注点分离:您的PHP不应该关心您的HTML,反之亦然。
  • 维护:当您混合使用HTML和PHP(或任何其他语言)时,维护可能会成为一场噩梦,并且应该不惜一切代价避免(除非您做的事情非常简单)

答案 1 :(得分:2)

仅限表演?在第一个例子中,您正在使用Smarty,这是一个由数千行PHP代码组成的相当重要的库。在接下来的两个中,您使用三行PHP 。当然,这两个会更快,开销更少,因为PHP不必首先解析Smarty。

至于字符串连接或变量的变电站,以及哪些引号等更快,这是一种微观优化,不太可能在亚Facebook范围内产生影响。一个或另一个只是节省纳秒。您可以在此页面上阅读实时比较:http://www.phpbench.com/如果有帮助。