Rails 3.2 - haml vs. erb。haml是否更快?(2012年2月)

问题描述 投票:13回答:2

我正在做一个项目,我仍然在考虑使用HAML(代码漂亮,视图文件较小)而不是经典的ERB模板。

我担心为什么我还没有这样做,是生成视图的速度--我读了一篇文章benchmarks,几乎总是HAML比ERB慢--但事实是,这些文章是2-3年前的。

所以我的问题是,如何看待这两个模板系统的比较,现在,在2012年开始?

ruby-on-rails view haml erb ruby-on-rails-3.2
2个回答
16
投票

这里有一些基准,有人在 2011年11月. 你 可以cd到你的haml目录下并运行 rake benchmark. 我说 "应该 "是因为你需要安装适当的依赖关系才能运行该任务。我玩了几分钟,但在本地没有找到。相关文件是 haml/test/benchmark.rb.

EDIT:我确实为你找到了一些更多的信息。有人和我遇到了同样的麻烦,试图让基准在本地工作,所以他们推出了自己的基准。我把那个 gist 分叉了,并添加了对比较 haml 和 erb 的支持。https:/gist.github.com1807036. 我使用了和haml库一样的模板来进行基准测试。下面是我运行代码的结果。

$ ruby benchmark.rb
       user     system      total        real
haml:  0.650000   0.000000   0.650000 (  0.651584)
erb:  0.540000   0.000000   0.540000 (  0.534727)

我用的是ruby 1.9.3 -p0, haml 3.1.4.

更新52020。github上的@spickermann 指出了基准测试中的一个缺陷,即 haml 和 erb 的比较不公平。haml引擎实例只被实例化了一次,而erb实例在1000次基准测试中每次都被实例化。当我们固定基准,使我们在每次基准运行中实例化每个实例时,我们得到了非常不同的结果。

$ ruby benchmark.rb 
       user     system      total        real
haml:  3.259634   0.007936   3.267570 (  3.271728)
erb:  0.205065   0.000571   0.205636 (  0.205824)

这个新的基准使用的是ruby 2.7.1, haml 5.1.2. 要点也已经更新了。


2
投票

网络上已经有一堆辩论的记录。

但是,当我们有一个应用程序,我们完全使用ERB。我们为什么要尝试切换到HAML呢?对我来说,这是在浪费时间,也是一个糟糕的决定,不会带来很多好处。虽然我们的代码在HAML中会突然变得更干净、更漂亮一些,但我们会浪费宝贵的时间来将ERB转换为HAML。我们有这么多其他重要的事情要做,为什么要在这种情况下把时间浪费在这么没有意义的事情上呢?

这都是相对的。你不需要用HAML代替ERB。ERB可以做所有相同的事情。它们只是同一工作的不同工具。

© www.soinside.com 2019 - 2024. All rights reserved.