47

I have been playing with Haml recently and really like the way the resulting code looks to me...the developer. I'm also not too worried about a designer being able to consume or change it...we're a small team.

That said, beginning work on a project we believe will generate quite a bit of traffic (who doesn't?). I'm concerned that there are things I just don't know about haml. Is there anything erb can do that haml can't? Does haml have a negative effect as a project grows? Are there other things that should be considered?

And finally...how does Haml compare speedwise to erubis? I see that it supposedly beats erb and eruby now...

Thanks!

4

7 回答 7

45

哈姆尔岩石。我没有看到任何最近的性能数据,但这些天它非常接近 erb。我认为如果你打开丑陋模式(它可以防止漂亮的缩进),它可能比 erb 更快。我们每天使用 Haml 进行 280 万次网页浏览。

有一个基准测试器检查到 Haml 源代码树:http: //github.com/nex3/haml/tree/master/test

2009 年 11 月更新

Nathan(Haml 的主要开发人员)在他的博客上发布了一些 Haml 2.2 基准。您可以在那里看到确切的数字,但简而言之:

  • 正常(漂亮打印)模式 = 比 ERB 慢 2.8 倍
  • 丑陋的模式(没有添加漂亮的标签)=等于ERB

Haml::Template::options[:ugly] = true您可以通过放入初始化程序或环境文件来启用丑陋模式。请注意,丑陋模式并不是真的那么丑陋 - 生成的 HTML 实际上比 ERB 更漂亮 - 它只是没有很好地缩进。

于 2008-09-19T01:18:57.887 回答
27

如果您使用 Rails,Haml 和 erubis 之间的性能差异可以忽略不计:无论如何,模板在第一次命中后会被编译和缓存。将此与片段和页面缓存相结合,您可以放心,视图不是应用程序的性能瓶颈。

你应该问自己的问题是:你喜欢写 Haml 吗?它会让你更有效率吗?然后你可以更容易地决定。

于 2008-09-18T23:05:11.813 回答
11

我喜欢 HAML,因为它是轻松编写结构化 HTML 的好工具,而且通常使用起来很有趣。但这与根据网站可能拥有的流量选择工具几乎没有关系。

如果您担心流量,您应该担心正确使用缓存。然后您需要应用一般 Web 应用程序性能的原则 - 结果是您将对页面加载做出超级快速的响应。这是一个高流量网站真正需要的。

可以在此处找到一些演示如何提高网站性能的演示文稿:

我所知道的学习如何正确使用 rails 缓存的最佳地点是:

于 2008-12-22T21:26:57.337 回答
4

我认为这完全是个人喜好和可维护性的问题。对我来说,Haml 让模板更容易阅读和理解,性能也很可以接受。最后,模板语言不太可能是您需要优化的地方——更有可能是数据库查询、视图或对象缓存等。

但是,对于 ERb 模板,如果您使用 erubis,您将基本上免费获得更好的性能。

于 2008-09-18T22:22:42.197 回答
2

如果您从编码的角度喜欢 haml 的工作方式,请不要过分担心模板引擎的性能。(不过,正如您所指出的,它现在很快。)它绝对可以生成其他引擎可以生成的任何输出。

通常,将精力放在设置缓存上比担心模板引擎遇到性能问题更有利可图。

于 2008-09-19T01:32:11.600 回答
1

我个人会在预编译模板中推荐我们 erubis。

特别是如果不需要动态模板。那么你最大的减速将受到 ruby​​ 解析 ruby​​ 的速度的限制。

我可能会设置一个小型 cron 作业,它只监视更改的源模板并在更改时自动编译它们,您可以在不使用时将其关闭。

编译一次,多次使用。

哦,如果你真的关心速度,Tenjin 可能也值得一看(与 erubis 相同的创造者)

http://www.kuwata-lab.com/tenjin/rbtenjin-examples.html

于 2008-09-18T19:37:41.077 回答
0

好吧,Haml 的性能随着每个版本的发布而不断提高。它在当前时间是否处于可接受的位置?这由您决定(我倾向于说“是”,但这是您根据需要做出的选择)。如果您喜欢模板和它们提供的可读性,那么性能下降(无论多么微不足道)应该是您决定的最终因素。

您应该考虑与 Haml 一起使用的其他工具之一是 make_resourceful,它是 Haml 的维护者 (Nathan Weizenbaum) 的另一个宝石,它简化了 Rails 应用程序中的许多 RESTful 事物。

如果您对 Haml(和 m_r)有任何进一步、更具体的问题,我相信 Nathan 会非常乐意回答这些问题。可以通过 Jabber/XMPP 和电子邮件联系到他。他的联系信息可以在这里找到。

于 2008-09-19T01:26:56.137 回答