Pull to refresh

Benchmark javascript-шаблонизаторов (client side)

Столкнувшись с проблемой выбора js-шаблонизатора, я решил провести небольшое исследование.
Были рассмотрены 16 шаблонизаторов, и проведена оценка каждого из них по нескольким критериям.
Но сегодня я хочу поделиться с Вами лишь частью своего исследования, касающейся скорости работы шиблонизаторов.

Список тестируемых шаблонизаторов


  1. Mustache
  2. JQuery Mustache
  3. Handlebars
  4. UnderscoreJS Template
  5. Twitter's HoganJS
  6. jQote2
  7. doT.js
  8. jQuery Nano (не путать с Nano.js)
  9. EJS
  10. Pure
  11. DustJS (форк от LinkedIn)
  12. Srender
  13. jQuery Templates
  14. Wayneeseguin jQuery Templates
  15. jTemplates
  16. jsRender

В список не вошли

  • Tempest — не работает в современных браузерах;
  • jQote1 — проигрывает во всем второй версии;
  • оригинальный DustJS — уже 3 года как не поддерживается и во всем проигрывает форку от LinkedIn.

Для справедливости нужно отметить, что каркас теста и код для 7 из указанных выше шаблонизаторов написан не мной, а взят из репозитария jQote2.

Особенности тестирования


Как известно, большинство шаблонизаторов сначала компилируют шаблон, а потом позволяют на его основе многократно строить верстку по различным данным.
В тесте учитывается только время построения верстки, а компиляция шаблонов происходит до его начала.
Другой важный аспект — это сложность шаблона, ведь одни шаблонизаторы могут иметь преимущество при простой подстановке значений в шаблон, а другие при наличии в шаблоне циклов и условных операторов.
По этой причине, при тестировании присутствует возможность, оценить каждый из этих случаев, выбрав тип шаблона «Простой» или «Цикл».
Не сложно догадаться, что на результаты тестирования влияют технические характеристики компьютера, установленная операционная система, тип и версия браузера, активные процессы компьютера и множество других факторов.
Влияет на результаты тестирования некоторых шаблонизаторов и версия jQuery. Я использовал 2.0.3 (последнюю на момент написания статьи).

Результаты


Скачать тесты Вы можете с github. Ниже приведены результаты запуска в Chrome 28 на моей локальной машине. Все значения указаны в миллисекундах.

Для шаблона «Простой»



Для шаблона «Цикл»



В табличном виде

  Среднее время работы (мс)
Шаблонизатор Простой Цикл
doT.js 11 12
jQote2 14 25
Dust 15 22
Underscore 23 25
Hogan 14 22
Handlebars 14 33
Pure 32 50
Mustache 40 51
JQuery Mustache 39 47
jsRender 20 56
Srender 46 77
EJS 41 77
jQuery Nano 33 80
jQuery Templates 37 91
jTemplates 41 160
Wayneeseguin 460 540
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.