Document fragment vs innerHTML vs looped appendChild (v56)

Revision 56 of this benchmark created by sofien zaabi on


Preparation HTML

<div id="my-div">
</div>

Setup

var div = document.getElementById('my-div')

Teardown



            while (div.firstChild) div.removeChild(div.firstChild);
        
  

Test runner

Ready to run.

Testing in
TestOps/sec
Document fragment
var i = 0, fragment = document.createDocumentFragment();

while (i < 20) {
  var el = document.createElement('li');
  el.classList.add('test-class');
  el.setAttribute('style','width:100%');
  el.innerText = 'This is my list item number ' + i;
   el.addEventListener("click", function(event) {
   el.classList.remove('test-class');
  fragment.appendChild(el);
i++; }

div.appendChild(fragment);
ready
Dom parser
var i = 0;
var tempHtml = '';
var parser = new DOMParser();
while (i < 20) {
   tempHtml += '<li class="test-class" style="width: 100%">This is my list 
   item number ' + i + '</li>';
   var el = parser.parseFromString(tempHtml , "text/html");
    el.addEventListener("click", function(event) {
   el.classList.remove('test-class');
  });
i++; }
ready
Looped appendChild
var i = 0;

while (i < 20) {
  var el = document.createElement('li');
  el.classList.add('test-class');
  el.setAttribute('style','width:100%');
  el.innerText = 'This is my list item number ' + i;
  el.addEventListener("click", function(event) {
   el.classList.remove('test-class');
  });
  div.appendChild(el);
i++; }
ready
innerHTML
var i = 0;
var div = document.creatElement('div')
while (i < 20) {
   var tempHtml = '';
   tempHtml += '<li class="test-class" style="width: 100%">This is my list 
   item number ' + i + '</li>';
   var div.innerHTML = tempHtml ;
    el.firstChild.addEventListener("click", function(event) {
   el.classList.remove('test-class');
  });
i++; }
ready

Revisions

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