Tests:
  • template

    x
     
    const tpl = document.createElement('template');
    tpl.innerHTML = `
    <div>
        <h1>Heading</h1>
        <p>Paragraph 1</p>
        <p>Paragraph 2</p>
        <button>Button</button>
    </div>
    `;
    const el = tpl.content.firstElementChild
    document.documentElement.appendChild(el.cloneNode());
  • DocumentFragment

     
    const fragment = document.createDocumentFragment();
    const el = document.createElement('div');
    const heading = document.createElement('h1');
    const para1 = document.createElement('p');
    const para2 = document.createElement('p');
    const button = document.createElement('button');
    const headingText = document.createTextNode('Heading');
    const para1Text = document.createTextNode('Paragraph 1');
    const para2Text = document.createTextNode('Paragraph 2');
    const buttonText = document.createTextNode('Button');
    heading.appendChild(headingText);
    para1.appendChild(para1Text);
    para2.appendChild(para2Text);
    button.appendChild(buttonText);
    el.appendChild(heading);
    el.appendChild(para1);
    el.appendChild(para2);
    el.appendChild(button);
    fragment.appendChild(el);
    document.documentElement.appendChild(fragment);
  • createElement

     
    // const fragment = document.createDocumentFragment();
    const el = document.createElement('div');
    const heading = document.createElement('h1');
    const para1 = document.createElement('p');
    const para2 = document.createElement('p');
    const button = document.createElement('button');
    heading.innerText = 'Heading';
    para1.innerText = 'Paragraph 1';
    para2.innerText = 'Paragraph 2';
    button.innerText = 'Button';
    el.appendChild(heading);
    el.appendChild(para1);
    el.appendChild(para2);
    el.appendChild(button);
    // fragment.appendChild(el);
    document.documentElement.appendChild(el);
  • createElement createTextNode

     
    // const fragment = document.createDocumentFragment();
    const el = document.createElement('div');
    const heading = document.createElement('h1');
    const para1 = document.createElement('p');
    const para2 = document.createElement('p');
    const button = document.createElement('button');
    const headingText = document.createTextNode('Heading');
    const para1Text = document.createTextNode('Paragraph 1');
    const para2Text = document.createTextNode('Paragraph 2');
    const buttonText = document.createTextNode('Button');
    heading.appendChild(headingText);
    para1.appendChild(para1Text);
    para2.appendChild(para2Text);
    button.appendChild(buttonText);
    el.appendChild(heading);
    el.appendChild(para1);
    el.appendChild(para2);
    el.appendChild(button);
    // fragment.appendChild(el);
    document.documentElement.appendChild(el);
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    template
    DocumentFragment
    createElement
    createElement createTextNode

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: one month ago)
Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:135.0) Gecko/20100101 Firefox/135.0
Firefox 135 on Ubuntu
View result in a separate tab
Test name Executions per second
template 176237.4 Ops/sec
DocumentFragment 147640.6 Ops/sec
createElement 200067.5 Ops/sec
createElement createTextNode 216041.1 Ops/sec