JS — Arithmetic
Integer multiply (Mops/s)—
Float multiply (Mops/s)—
Math.sqrt loop (Mops/s)—
Math.sin/cos (Mops/s)—
Bitwise ops (Mops/s)—
**exponentiation (Mops/s)—
BigInt add (Kops/s)—
JS — Strings
String concat (Kops/s)—
Template literal (Kops/s)—
String split (Kops/s)—
String search (Kops/s)—
String replace (Kops/s)—
String slice (Mops/s)—
charCodeAt (Mops/s)—
String.fromCharCode (Mops/s)—
JS — Arrays
Array push/pop (Mops/s)—
Array sort 10K (ms)—
Array map (Mops/s)—
Array filter (Mops/s)—
Array reduce (Mops/s)—
Array find (Mops/s)—
Array flat (Kops/s)—
Typed Array fill (GB/s)—
Typed Array copy (GB/s)—
JS — Objects & Functions
Object create (Mops/s)—
Property access (Mops/s)—
Property set (Mops/s)—
Object.keys (Kops/s)—
Object spread (Kops/s)—
Prototype chain (Mops/s)—
Function call overhead (Mops/s)—
Closure capture (Mops/s)—
apply/call overhead (Mops/s)—
JS — Collections
Map set/get (Mops/s)—
Map iteration (Mops/s)—
Set add/has (Mops/s)—
Set iteration (Mops/s)—
WeakMap set/get (Mops/s)—
WeakSet add/has (Mops/s)—
JS — Regex
Simple match (Kops/s)—
Email validate (Kops/s)—
Global replace (Kops/s)—
Named groups (Kops/s)—
Lookahead (Kops/s)—
matchAll (Kops/s)—
JS — JSON & Serialization
JSON.stringify small (Kops/s)—
JSON.parse small (Kops/s)—
JSON.stringify large (MB/s)—
JSON.parse large (MB/s)—
structuredClone (Kops/s)—
JS — Sorting Algorithms
Native sort 100K nums (ms)—
Native sort 100K strs (ms)—
Native sort 100K objs (ms)—
Intl.Collator sort (ms)—
DOM — Creation & Mutation
createElement (Kops/s)—
createTextNode (Kops/s)—
cloneNode shallow (Kops/s)—
cloneNode deep (Kops/s)—
innerHTML set (Kops/s)—
insertAdjacentHTML (Kops/s)—
appendChild (Kops/s)—
replaceChild (Kops/s)—
remove() (Kops/s)—
DocumentFragment bulk (Kops/s)—
DOM — Attributes & Properties
setAttribute (Kops/s)—
getAttribute (Kops/s)—
removeAttribute (Kops/s)—
dataset.key set (Kops/s)—
classList.add/remove (Kops/s)—
classList.toggle (Kops/s)—
classList.contains (Mops/s)—
textContent set (Kops/s)—
id property set (Mops/s)—
DOM — Querying
getElementById (Mops/s)—
querySelector (Kops/s)—
querySelectorAll div (Kops/s)—
querySelectorAll .class (Kops/s)—
querySelectorAll [attr] (Kops/s)—
querySelectorAll :nth-child (Kops/s)—
querySelectorAll :not() (Kops/s)—
closest() (Kops/s)—
matches() (Mops/s)—
getElementsByClassName (Kops/s)—
getElementsByTagName (Kops/s)—
DOM — Layout & Reflow
offsetWidth read (Kops/s)—
getBoundingClientRect (Kops/s)—
getComputedStyle (Kops/s)—
Force reflow (ops/s)—
scrollTop read (Mops/s)—
clientWidth read (Mops/s)—
style.width mutation (Kops/s)—
style.transform set (Kops/s)—
cssText bulk set (Kops/s)—
DOM — Events
addEventListener (Kops/s)—
removeEventListener (Kops/s)—
dispatchEvent (Kops/s)—
CustomEvent create (Kops/s)—
Event bubbling depth-10 (Kops/s)—
Canvas 2D — Rasterization
fillRect (Mrects/s)—
strokeRect (Mrects/s)—
clearRect (Mrects/s)—
fillCircle (Karcs/s)—
strokeCircle (Karcs/s)—
bezierCurveTo (Kops/s)—
lineTo polyline (Kops/s)—
Path2D fill (Kops/s)—
Canvas 2D — Pixel & Image
getImageData (Mpx/s)—
putImageData (Mpx/s)—
drawImage canvas (Kops/s)—
drawImage scaled (Kops/s)—
createImageData (Kops/s)—
Pixel manipulation (Mpx/s)—
Canvas 2D — Text & State
fillText (Kops/s)—
measureText (Kops/s)—
save/restore (Kops/s)—
setTransform (Kops/s)—
gradient fill (Kops/s)—
shadow render (Kops/s)—
globalAlpha ops (Kops/s)—
Web APIs — Storage
localStorage setItem (Kops/s)—
localStorage getItem (Kops/s)—
localStorage removeItem (Kops/s)—
sessionStorage setItem (Kops/s)—
sessionStorage getItem (Kops/s)—
Web APIs — URL & Encoding
URL parse (Kops/s)—
URL stringify (Kops/s)—
URLSearchParams (Kops/s)—
encodeURIComponent (Kops/s)—
decodeURIComponent (Kops/s)—
btoa / atob roundtrip (Kops/s)—
Web APIs — Crypto & Hashing
crypto.randomUUID (Kops/s)—
crypto.getRandomValues (Kops/s)—
SubtleCrypto SHA-256 1KB (Kops/s)—
SubtleCrypto SHA-256 1MB (MB/s)—
Web APIs — Observer & Misc
MutationObserver setup (Kops/s)—
ResizeObserver setup (Kops/s)—
performance.now() (Mops/s)—
Date.now() (Mops/s)—
new Date() (Mops/s)—
Intl.DateTimeFormat (Kops/s)—
Intl.NumberFormat (Kops/s)—
Async & Event Loop
Promise.resolve chain (Kops/s)—
async/await (Kops/s)—
queueMicrotask (Kops/s)—
Promise.all 1000 (Kops/s)—
Promise.race 1000 (Kops/s)—
setTimeout(0) latency (ms)—
rAF latency (ms)—
MessageChannel latency (ms)—
Memory Allocation
Object literal alloc (Mops/s)—
Array literal alloc (Mops/s)—
Float64Array 1K (Mops/s)—
ArrayBuffer 1MB (Kops/s)—
DataView ops (Mops/s)—
SharedArrayBuffer r/w (Mops/s)—
CSS — Selector Engine
Tag selector (Kops/s)—
Class selector (Kops/s)—
ID selector (Kops/s)—
Descendant selector (Kops/s)—
Child combinator (Kops/s)—
Sibling combinator (Kops/s)—
Pseudo :nth-child (Kops/s)—
Pseudo :not() (Kops/s)—
Attribute selector (Kops/s)—
Complex multi-class (Kops/s)—
CSS — Computed Styles
getComputedStyle full (Kops/s)—
getPropertyValue color (Kops/s)—
CSSStyleDeclaration read (Mops/s)—
CSS variable read (Mops/s)—
CSS variable write (Kops/s)—
Inline style parse (Kops/s)—