Test case details

Preparation Code

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/mithril/0.1.12/mithril.min.js"></script> <script src="http://dominate.js.zkpq.ca/dominate.min.js"> </script> <!-- Mithril --> <div id="mithrilapp">   Mithril: <span id="mithrilMountNode"></span> </div> <!-- dominate.js --> Dominate: <div id="dominate"> </div> Vanilla: <div id="vanilla"></div> <script> var MithrilData = new Array(); var mithapp = {   controller: function() {     this.data = MithrilData;   },   view: function(ctrl) {     return m("span", [ctrl.data.map(function(datum) { return m('span', datum); })]);   } } $(document).ready(function() {   m.module(document.getElementById("mithrilMountNode"), mithapp);   window.Mclear = function() {     m.startComputation();     MithrilData.splice(0);     m.endComputation();   };   window.Mpush = function(data) {     m.startComputation();     MithrilData.push(data);     m.endComputation();   }     var dom_node = one("#dominate"); window.DomClear = function() {    dom_node.empty(); } window.DomPush = function(data) {    dom_node.span(data); }   }); </script>

Test cases

Test #1

var vd = document.getElementById("vanilla"); var df = document.createDocumentFragment(); vd.innerHTML = ""; for (var i = 0; i < 100; i++) {   var sn = document.createElement("span");   sn.appendChild(document.createTextNode("vnode"));   df.appendChild(sn); } vd.appendChild(df);

Test #2

Mclear(); for (var i = 0; i < 100; i++) {   Mpush("mitem"); }

Test #3

var d = one("#dominate").empty(); for (var i = 0; i < 100; i++) {   d.span("dnode"); }