Подтвердить что ты не робот

Rails 3.2 - haml vs. erb. Хамль быстрее? (февраль 2012)

Я работаю над проектом, и я все еще думаю об использовании HAML (красивый код, меньше размера файлов вида) вместо классического шаблона ERB.

Мои заботы, почему я этого не делал, это скорость генерации просмотров - я читал статьи/тесты и почти всегда был HAML медленнее, чем ERB, - но правда в том, что статьи 2-3 года.

Итак, мой вопрос: как выглядит сравнение этих двух систем шаблонов сейчас, в начале 2012 года?

4b9b3361

Ответ 1

Вот некоторые ориентиры от кого-то в ноябрь 2011 г.. Вы должны иметь возможность записывать cd в свой каталог haml и запускать rake benchmark. Я говорю "должен", потому что вам нужно будет установить соответствующие зависимости для выполнения этой задачи. Я играл с ним несколько минут, но не повезло на месте. Соответствующий файл haml/test/benchmark.rb.

EDIT: Я нашел для вас дополнительную информацию. У кого-то еще была такая же проблема, как и я, пытаясь получить локальные тесты, поэтому они перевернули свои собственные. Я разветкил этот gist и добавил поддержку сравнения 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.

Ответ 2

В Интернете уже есть куча дискуссий.

Но когда у нас есть приложение, в котором мы использовали исключительно ERB. Почему мы должны пытаться переключиться на HAML? Для меня это пустая трата времени и плохое решение, которое не принесло бы много преимуществ. Хотя наш код внезапно станет чище и немного красивее в HAML, мы потратим драгоценные часы на конвертацию ERB в HAML. У нас так много других важных вещей, зачем тратить время на что-то столь бессмысленное в этом случае?

Все это относительное. Вам не нужно использовать HAML вместо ERB. ERB может делать все то же самое. Это просто разные инструменты для одной и той же работы.