innerHTML vs removeChild vs replaceChild (v479)

Revision 479 of this benchmark created by Victor de Oliveira Areas on


Preparation HTML

<div style="width:1px;height:1px;overflow:hidden;">
<div id='box1'></div>
<div id='box2'></div>
<div id='box3'></div>
<div id='box4'></div>
</div>

Setup

var testPattern = '<div>hello<div style="background-color: #000000;">ttt</div></div>';
  var i, testString;
  for (i = 0; i < 1000; i++) {
    testString += testPattern;
  }
  
  var box1 = document.getElementById('box1');
  var box2 = document.getElementById('box2');
  var box3 = document.getElementById('box3');
  var box4 = document.getElementById('box4');
  
  box1.innerHTML = testString;
  box2.innerHTML = testString;
  box3.innerHTML = testString;
  box4.innerHTML = testString;
  
  function test1() {
    if (!box1) return;
    while (box1.firstChild) {
      box1.removeChild(box1.firstChild);
    }
    box1 = null;
  }
  
  function test2() {
    if (!box2) return;
    while (box2.lastChild) {
      box2.removeChild(box2.firstChild);
    }
    box2 = null;
  }
  
  function test3() {
    if (!box3) return;
    var parent = box3.parentNode;
    parent.removeChild(box3);
    box3.innerHTML = '';
    parent.appendChild(box3);
    box3 = null;
  }
  
  function test4() {
    if (!box4) return;
    var parent = box4.parentNode;
    parent.replaceChild(box4.cloneNode(false), box4);
    box4 = null;
  }

Test runner

Ready to run.

Testing in
TestOps/sec
innerHTML
test3();
ready
removeChild (first)
test1();
ready
replaceChild
test4();
ready
removeChild (last)
test2();
ready

Revisions

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