Consider these three versions of adding li to ul :
Naive version (20% slower):
var ul = document.getElementById('targetUl'); for (var i = 0; i < 200; i++) { var li = document.createElement('li'); li.innerHTML = Math.random(); ul.appendChild(li); }
Using a JavaScript fragment (4% slower):
var ul = document.getElementById('targetUl'), fragment = document.createDocumentFragment(); for (var i = 0; i < 200; i++) { var li = document.createElement('li'); li.innerHTML = Math.random(); fragment.appendChild(li); } ul.appendChild(fragment);
Adding to an element is not yet in the DOM (1.26% faster):
var ul = document.createElement('ul'), div = document.getElementById('targetDiv'); for (var i = 0; i < 200; i++) { var li = document.createElement('li'); li.innerHTML = Math.random(); ul.appendChild(li); } div.appendChild(ul);
Why is adding to a DOM element stored in memory faster than adding to a Fragment ? Since Fragment was created for this single purpose, shouldn't it be faster? Are they advantages of using Fragment over an element stored in memory, in addition to not having to include a top-level element before adding it?
Check test result from jsperf: http://jsperf.com/javascript-fragments-tests
source share