Test name | Executions per second |
---|---|
setProperty | 32.5 Ops/sec |
Object.assign | 35.3 Ops/sec |
.style | 35.9 Ops/sec |
.cssText | 31.9 Ops/sec |
<div id="benchmark"></div>
const numTests = 10000;
const el = document.getElementById("benchmark");
const css = (new Array(numTests)).fill(0).map(() => ({
"opacity": `${Math.random()}`,
"zIndex": `${Math.floor(Math.random() * 1000)}`
}));
let i = 0;
while (i < numTests) {
for (const s in css[i]) {
el.style.setProperty(s.replace(/([a-z][A-Z])/g, (m) => m[0] + "-" + m[1].toLowerCase()), css[i][s]);
}
i++;
}
let i = 0;
while (i < numTests) {
Object.assign(el.style, css[i]);
i++;
}
let i = 0;
while (i < numTests) {
for (const s in css[i]) {
el.style[s] = css[i][s];
}
i++;
}
let i = 0;
while (i < numTests) {
console.log(i, css[i]);
const s = Object.entries(css[i]).map(([key, value]) => `${key}:${value}`).join(";");
el.style.cssText += s;
i++;
}