Smarty基准测试,有人吗?

时间:2008-12-13 08:15:43

标签: php smarty template-engine

我正在考虑Smarty作为我的网络应用程序模板解决方案,我现在关注它对普通PHP的性能。

Smarty网站说它应该是相同的,然而,我无法找到任何人进行真正的基准测试以证明该陈述是对还是错。

有没有人对Smarty和普通PHP做一些基准测试?或者可能在这些测试中遇到一些资源?

由于

10 个答案:

答案 0 :(得分:14)

因为最终,Smarty将模板文件编译并缓存到本机PHP代码,所以确实没有理论上的性能差异。 当然,由于需要每次都需要解释的Smarty代码块,总会有一些性能损失。

答案 1 :(得分:4)

您可能还想要一个与Smarty类似的新模板库Dwoo

答案 2 :(得分:3)

刚刚找到this非常简单的基准 - 可能不是很重要。

答案 3 :(得分:2)

这是一个模板引擎基准测试,用于测试PHP与Smarty以及更多模板引擎http://www.raintpl.com/PHP-Template-Engines-Speed-Test/

  • 对于赋值Twig更快,它将html模板编译成类,所以它也是 执行速度比PHP更快!恕我直言(很多文件)很复杂,但速度非常快!

  • 对于循环来说,PHP包含的速度越快,很快就会出现Rain,这很简单,很小(1个文件)并且很快。

答案 4 :(得分:2)

这是另一个模板解决方案XSLT这里是我转换的其中一个页面的基准(它是一个简单的页面):

// with smarty (baseline)
    0.014 seconds

// with xsl/xslt-clientside
    0.008 seconds
    42% decrease in server stress

// with xsl/xslt-serverside
// this process would only be done if the users browser doesn't support client-side XSLT
    0.016 seconds
    14% increase in server stress

它并非适合所有人,但如果表现是您的主要关注点:)

最重要的是,您允许客户端缓存您的模板。

这是我正在做的一个例子(这是我的一个网站):http://pixao.com

以下是更大规模网站上的另一个例子:http://worldofwarcraft.com

到目前为止,我还没有碰到任何表演停止者

答案 5 :(得分:1)

这取决于您如何使用Smarty,因为您的网页流可以更改

经典普通PHP流程:

  • 输出
  • 处理$ _REQUEST数据
  • 输出
  • 处理数据库查询
  • 输出
  • 处理$ _REQUEST数据
  • 输出
  • ...

经典Smarty流程:

  • 处理所有$ _REQUEST数据
  • 处理所有数据库查询
  • 全部输出

如果普通PHP在这个页面花了1.0秒,Smarty页面也需要1.0秒。但如果我们假设所有数据库和$ _request handeling需要0.7秒。普通PHP直接启动输出,而Smarty版本在0.7秒后开始输出。因此,浏览器可以更快地开始下载样式表和图像。 没有输出也意味着“停止”按钮无效。

但是在Smarty中,您可以从模板中调用函数和方法。 将慢速部分延迟到需要数据的位置。

答案 6 :(得分:1)

Smarty在首次使用时为其所有模板文件生成PHP代码,只要您正确设置它们,并在可能的情况下使用它们而不是再次解析模板。

我使用它已经有一段时间了,它足够快,但最后我把它换成普通的PHP文件,因为它有点限制(太多PHP4-isms)。

答案 7 :(得分:1)

Smarty本身就是一个庞大的图书馆...如果你要使用Smarty,我建议你使用APC缓存已编译的版本..它将抵消Smarty库的相当大的尺寸......

答案 8 :(得分:0)

根据我自己的经验和非正式基准,Smarty本身不会导致任何重大的性能下降。但是,当你开始编写自定义插件时,事情就会变得艰难。

编译Smarty模板&缓存为PHP,但自定义插件总是在运行时加载和执行,并且总是比在普通的旧PHP文件中运行相同的代码慢。使用自定义字符串格式化插件时,您不会注意到这一点,但在插件中进行数据库查询时,您肯定会看到它。

总的来说,我强烈推荐Smarty。从PHP中获取显示使我们的代码更具可读性和可维护性。你必须确保你对插件中的内容保持谨慎。

答案 9 :(得分:0)

a drop in replacement for Smarty called Template Lite在库文件大小方面要轻得多。也就是说,我已经在一些极高负载的情况下使用了原始的Smarty而无需交换这个库。