createDocumentFragment vs appendChild on non-appended element (v23)

Revision 23 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
Straight DOM appendChild
var form = document.createElement('form');
document.body.appendChild(form);

for (var i = 0; i < 1000; i++) {
  form.appendChild(document.createElement('input'));
}

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

var frag = document.createDocumentFragment();

for (var i = 0; i < 1000; i++) {
  frag.appendChild(document.createElement('input'));
}

form.appendChild(frag);

document.body.removeChild(form);
ready
jQuery Append
var form = $('form');
$(document.body).append(form);

for (var i = 0; i < 1000; i++) {
  form.append($('input'));
}

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

for (var i = 0; i < 1000; i++) {
  form.innerHTML += "<input></input>";
}
ready
InnerHTML Batch
var form = document.createElement('form');
document.body.appendChild(form);

var html = ""
for (var i = 0; i < 1000; i++) {
  html += "<input></input>";
}
form.innerHTML += html;
ready

Revisions

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