EJS vs Handlebars vs MTE (v8)

Revision 8 of this benchmark created by Timothy Gu on


Description

For a more complex version of this test, but with only EJS, doT, and Handlebars, see http://jsperf.com/ejs-vs-handlebars-complex/6

Preparation HTML

<script src="https://ajax.googleapis.com/ajax/libs/mootools/1.3/mootools-yui-compressed.js"></script>
<script src="http://builds.handlebarsjs.com.s3.amazonaws.com/handlebars-v2.0.0.js"></script>
<script src="https://cdn.rawgit.com/tj/ejs/1.0.0/ejs.min.js"></script>
<script src="https://mte.null-tech.com/scripts/mte.js"></script>
<script src="https://mte.null-tech.com/scripts/mte.observables.js"></script>
<script src="https://mte.null-tech.com/scripts/mte.markup.js"></script>
<script src="https://olado.github.io/doT/doT.min.js"></script>

<script id="testEJS" type="text/ejs">
  <h1><%= title %></h1>
</script>
<script id="testHandlebars" type="text/x-handlebars-template">
  <h1>{{title}}</h1>
</script>
<script id="testMTE" type="text/mte">
  <h1 data-bind="title"></h1>
</script>
<script id="testDoT" type="text/dot">
  <h1>{{=it.title}}</h1>
</script>

Setup

var data = {
      title: "Test title"
    };
    
    var ejsPreCompiled = ejs.compile($("testEJS").innerHTML);
    
    var hbsPreCompiled = Handlebars.compile($("testHandlebars").innerHTML);
    
    var mtePreCompiled = new MTEEngine.Markup().fromElement('testMTE');
    
    var doTPreCompiled = doT.template($("testDoT").innerHTML);

Test runner

Ready to run.

Testing in
TestOps/sec
EJS
var template = ejs.compile($("testEJS").innerHTML);
template(data);
ready
Handlebars
var template = Handlebars.compile($("testHandlebars").innerHTML);
template(data);
ready
MTE
var templateMTE = new MTEEngine.Markup().fromElement('testMTE');
templateMTE.render(data)
ready
doT
var template = doT.template($("testDoT").innerHTML);
template(data);
ready
EJS Precompiled
ejsPreCompiled(data);
ready
Handlebars Precompiled
hbsPreCompiled(data);
ready
MTE Precompiled
mtePreCompiled.render(data);
ready
doT Precompiled
doTPreCompiled(data)
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.