Test name | Executions per second |
---|---|
JavaScript Template | 181129.0 Ops/sec |
only innerHTML | 164380.6 Ops/sec |
DOM Template, repeated getElementById | 139473.8 Ops/sec |
DOM Template, single getElementById | 50658.8 Ops/sec |
<template id="PERFORMANCE-DOM-TEMPLATE">
<span class="simple"></span>
</template>
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)
);
}
}
);
let el = document.createElement("performance-template");
document.body.append(el);
let el = document.createElement("performance-innerhtml");
document.body.append(el);
let el = document.createElement("performance-dom-template-getelement");
document.body.append(el);
let el = document.createElement("performance-dom-template");
document.body.append(el);