13

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

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

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

4

2 回答 2

16

以下是某人在2011 年11 月的一些基准测试。您应该能够 cd 到您的 haml 目录并运行rake benchmark. 我说“应该”是因为您需要安装正确的依赖项才能运行该任务。我玩了几分钟,但在本地没有运气。相关文件是haml/test/benchmark.rb.

编辑:我确实为您找到了更多信息。其他人在尝试让基准在本地运行时遇到了和我一样的麻烦,所以他们推出了自己的。我分叉了这个要点,并增加了对比较 haml 和 erb 的支持:https ://gist.github.com/1807036 。我使用了 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。

更新 5/2020: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。要点也已更新。

于 2012-02-12T07:03:28.387 回答
2

网络上已经记录了很多辩论。

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

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

于 2013-08-28T11:14:40.373 回答