Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
Run results for:
customElements using Template cloneNode vs. innerHTML
Go to the benchmark
Embed
Embed Benchmark Result
Run details:
User agent:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Safari/605.1.15
Browser:
Safari 16
Operating system:
Mac OS X 10.15.7
Device Platform:
Desktop
Date tested:
one year ago
Test name
Executions per second
JavaScript Template
115209.6 Ops/sec
only innerHTML
104554.0 Ops/sec
DOM Template, repeated getElementById
114025.0 Ops/sec
DOM Template, single getElementById
59624.7 Ops/sec
HTML Preparation code:
<template id="PERFORMANCE-DOM-TEMPLATE"> <span class="simple"></span> </template>
Script Preparation code:
let template = document.createElement("template"); template.innerHTML = `<span class="simple"></span>`; let DOMTemplate = document.getElementById("PERFORMANCE-DOM-TEMPLATE"); customElements.define( "performance-template", class extends HTMLElement { constructor() { super() .attachShadow({ mode: "open", }) .append(template.content.cloneNode(true)); } } ); customElements.define( "performance-innerhtml", class extends HTMLElement { constructor() { super().attachShadow({ mode: "open", }).innerHTML = `<span class="simple"></span>`; } } ); customElements.define( "performance-dom-template", class extends HTMLElement { constructor() { super() .attachShadow({ mode: "open", }) .append(DOMtemplate.content.cloneNode(true)); } } ); customElements.define( "performance-dom-template-getelement", class extends HTMLElement { constructor() { super() .attachShadow({ mode: "open", }) .append( document.getElementById("PERFORMANCE-DOM-TEMPLATE").content.cloneNode(true) ); } } );
Tests:
JavaScript Template
let el = document.createElement("performance-template"); document.body.append(el);
only innerHTML
let el = document.createElement("performance-innerhtml"); document.body.append(el);
DOM Template, repeated getElementById
let el = document.createElement("performance-dom-template-getelement"); document.body.append(el);
DOM Template, single getElementById
let el = document.createElement("performance-dom-template"); document.body.append(el);