createDocumentFragment vs appendChild on non-appended element (v25)

Revision 25 of this benchmark created on


Preparation HTML

<script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>

Test runner

Ready to run.

Testing in
TestOps/sec
Normal Append
var div = document.createElement('div');
document.body.appendChild(div);
var n = document.createElement("div");
n.innerHTML = "Hello";

for (var i = 0; i < 1000; i++) {
  div.appendChild(n);
}

document.body.removeChild(div);
ready
Document Fragment
var div = document.createElement('div');
document.body.appendChild(div);

var frag = document.createDocumentFragment();
var n = document.createElement("div");
n.innerHTML = "Hello";

for (var i = 0; i < 1000; i++) {
  frag.appendChild(n);
}

div.appendChild(frag);

document.body.removeChild(div);
ready
Normal Append Last
var div = document.createElement('div');

for (var i = 0; i < 1000; i++) {
  var n = document.createElement("div");
  n.innerHTML = "Hello";
  div.appendChild(n);
}

document.body.appendChild(div);
document.body.removeChild(div);
ready
jQuery Append
var div = $('<div/>');
$('body').append(div);

for (var i = 0; i < 1000; i++) {
  div.append($('<div>Hello</div>'));
}

div.remove();
ready
InnerHTML Naive Append
var div = document.createElement('div');
document.body.appendChild(div);

for (var i = 0; i < 1000; i++) {
  div.innerHTML += "<div>Hello</div>";
}

document.body.removeChild(div);
ready
InnerHTML Optimized Append
var div = document.createElement('div');
document.body.appendChild(div);

var html = ""
for (var i = 0; i < 1000; i++) {
  html += "<div>Hello</div>";
}
div.innerHTML += html;
document.body.removeChild(div);
ready

Revisions

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