Document fragment vs innerHTML vs looped appendChild (v81)

Revision 81 of this benchmark created by Román Cortés 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
innerHTML
var i = 0;
var html = [];
while (i < 20) {
  html.push('<div style="border-style:solid;width:20px;">This is my list item number ' + i + '</div>');
i++; }
div.innerHTML = html.join("");
ready
Looped appendChild
var i = 0;

while (i < 20) {
  var el = document.createElement('div');
  el.style.borderStyle = "solid";
  el.style.width = "20px";
  el.innerText = 'This is my list item number ' + i;
  div.appendChild(el);
i++; }
ready
cloning
var i = 0;

var ref = document.createElement('div');
ref.setAttribute("style", "border-style:solid;width:20px;");

while (i < 20) {
  var el = ref.cloneNode(true);
  el.textContent = 'This is my list item number ' + i;
  div.appendChild(el);
i++; }
ready
Document fragment
var i = 0, fragment = document.createDocumentFragment();

while (i < 20) {
  var el = document.createElement('div');
  el.style.borderStyle = "solid";
  el.style.width = "20px";
  el.innerText = 'This is my list item number ' + i;
  fragment.appendChild(el);
i++; }

div.appendChild(fragment);
ready
Looped appendChild textContent setAttribute
var i = 0;

while (i < 20) {
  var el = document.createElement('div');
  el.setAttribute("style", "border-style:solid;width:20px;");
  el.textContent = 'This is my list item number ' + i;
  div.appendChild(el);
i++; }
ready

Revisions

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