EJS vs Handlebars vs MTE (v7)

Revision 7 of this benchmark created by Timothy Gu on


Preparation HTML

<script src="//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="//embeddedjavascript.googlecode.com/svn/trunk/src/ejs.js"></script>
<script src="//mte.null-tech.com/scripts/mte.js"></script>
<script src="//mte.null-tech.com/scripts/mte.observables.js"></script>
<script src="//mte.null-tech.com/scripts/mte.markup.js"></script>
<script src="http://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 = new EJS({
      text: $("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
new EJS({
  text: $("testEJS").innerHTML
}).render(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.render(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.