Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
Run results for:
DOM structure: bottom up vs top down vs DocumentFragment
Go to the benchmark
Embed
Embed Benchmark Result
Run details:
User agent:
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36
Browser:
Chrome 137
Operating system:
Linux
Device Platform:
Desktop
Date tested:
5 months ago
Test name
Executions per second
Bottom up
150377.8 Ops/sec
Top down
167638.9 Ops/sec
Real top down
151603.0 Ops/sec
Top down (DocumentFragment)
142057.3 Ops/sec
Mixed with append()
165763.5 Ops/sec
HTML Preparation code:
<div id='container'></div>
Tests:
Bottom up
const container = document.getElementById('container'); const ul = document.createElement('ul'); for (const d of '123456') { const li = document.createElement('li'); li.textContent = d; ul.appendChild(li); } const div = document.createElement('div'); div.appendChild(ul); container?.appendChild(div).remove();
Top down
const container = document.getElementById('container'); const div = document.createElement('div'); const ul = div.appendChild(document.createElement('ul')); for (const d of '123456') { const li = document.createElement('li'); li.textContent = d; ul.appendChild(li); } container?.appendChild(div).remove();
Real top down
const container = document.getElementById('container'); const ul = container .appendChild(document.createElement('div')) .appendChild(document.createElement('ul')); for (const d of '123456') { const li = document.createElement('li'); li.textContent = d; ul.appendChild(li); } container?.firstElementChild?.remove();
Top down (DocumentFragment)
const container = document.getElementById('container'); const fragment = document.createDocumentFragment(); const ul = fragment .appendChild(document.createElement('div')) .appendChild(document.createElement('ul')); for (const d of '123456') { const li = document.createElement('li'); li.textContent = d; ul.appendChild(li); } container.appendChild(fragment); container?.firstElementChild?.remove();
Mixed with append()
const container = document.getElementById('container'); const lis = Array.from('123456').map((d) => { const li = document.createElement('li'); li.textContent = d; return li; }); const div = document.createElement('div'); const ul = div.appendChild(document.createElement('ul')) .append(...lis); container?.appendChild(div).remove();