【问题标题】:Rails 3.2 - haml vs. erb. Is haml faster? (february 2012)Rails 3.2 - haml 与 erb。 haml更快吗? (2012 年 2 月)
【发布时间】:2012-03-03 23:44:23
【问题描述】:

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

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

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

【问题讨论】:

    标签: ruby-on-rails view haml erb ruby-on-rails-3.2


    【解决方案1】:

    这里有一些来自Nov 2011 的人的基准测试。您应该能够 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。要点也已更新。

    【讨论】:

    • 那么结论是什么? haml 占用更多内存/cpu ?
    • 从开发者的角度来看,Haml 更好(在大多数情况下),如果额外的负载很小并且不会显着影响性能,我说去吧!
    • 我偶然发现了这个旧答案,查看了基准代码和模式对其进行了一些更改(请参阅comment in the gist。我认为情况最糟糕。在我的基准版本和与当前版本的 Ruby、ERB 和 haml ERB 相比,ERB 的性能提高了 20 倍......
    • @spickermann 我用 ruby​​ 2.6.5 结果更新了答案中的基准。你用的是什么版本的 ruby​​ 和 haml?
    • @siannopollo 我使用了 Ruby 2.7.1 和 haml 5.1.2。但是我的 MacBook 已经用了大约五年了……
    【解决方案2】:

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

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

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

    【讨论】:

    • 这种性质的转换可以自动进行......请参阅html2haml.heroku.com 和他们的 gem。这里的重点是项目的决定。如果你发现阅读大量的 haml 比 html 更好,那就去吧。
    猜你喜欢
    • 2012-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-14
    • 1970-01-01
    • 1970-01-01
    • 2012-06-06
    相关资源
    最近更新 更多