The browser will execute published benchmark kernels on your machine for approximately sixty seconds, in parallel across all available CPU cores save one (reserved for page responsiveness), and report the wear drawn in two units of account.
| CPU kernels (round-robin) | sunspider · math-cordic · sunspider · crypto-md5 · sunspider · math-spectral-norm · microwear · fma-stress |
| Parallel workers | max(2, navigator.hardwareConcurrency − 1) · one core reserved for the UI and the [ stop benchmark ] action. Each worker holds a synchronous round-robin loop for ~250 ms between yields so the OS scheduler cannot migrate it onto an efficiency core mid-batch — efficiency cores draw too little wattage to register on a fan curve. |
| Benchmark suite | SunSpider 1.0.2 (Apple / WebKit) preserved for continuity. Modern JIT compilers reduce its kernels to near-native code that draws negligible wattage on power-efficient silicon; v5 adds microwear · fma-stress, a sustained fp32 FMA-chain kernel structured for SLP auto-vectorization in JSC and V8, alongside the historical suite. Sources embedded verbatim further down in this HTML, with original license headers preserved. |
| GPU pass | WebGPU compute shader when available (Chrome 113+, Safari 18+, Firefox 121+ behind a flag): smoothed Mandelbrot at 4096 × 4096 with 1024-iteration cap, dispatched at 256 × 256 workgroups of 16 × 16 threads, chained without requestAnimationFrame. Falls back to a WebGL fragment-shader pass at 2048 × 2048 with 3 × 3 supersampling and the same iteration cap when WebGPU is unavailable. Both paths follow the smoothed-iteration-count derivation from Iñigo Quilez's published article (cited below). The fallback is feature-detected; absence is reported, not hidden. |
| Duration | ~120 seconds. The visitor may stop at any time. Modern silicon's thermal mass takes time to absorb load into the package temperature; v4's 60-second window was insufficient on Apple Silicon parts even at sustained CPU + GPU saturation. |
| Battery API (optional) | If navigator.getBattery() is exposed, a second estimate from observed level delta is shown for comparison. Most browsers no longer expose it; this is reported neutrally. |
| battery-mort definition | one-millionth of the device's rated battery charge-cycle life |
MORT_COEFF_BATTERY | 1.20 × 10⁻⁸ charge-cycles per work-unit · tuned, not measured. The v4 baseline was calibrated so a sixty-second SunSpider-only multi-core run on an Apple M1 produced ≈ 4–6 battery-morts. v5 doubles the runtime and adds both the FMA-stress CPU kernel and the WebGPU compute pass, so figures will scale up proportionally; the coefficient is left unchanged so v4 and v5 reports are directly comparable in raw work-units. |
| Rated battery cycles | 800 (Li-ion default) |
| thermal-mort definition | one-millionth of the device's estimated solder / thermal-cycle rated life |
MORT_COEFF_THERMAL | 2.20 × 10⁻⁷ thermal-cycles per work-unit · tuned, not measured. Thermal fatigue accumulates faster than charge-cycle wear; the larger figure is expected. |
| Rated thermal cycles | 1,500 (SAC305 lead-free solder · conservative midpoint of JEDEC JESD22-A104 / IPC-9701-class testing ranges) |
Kraken 1.1 (Mozilla, Apache-2.0) was considered as a second source. Its kernels depend on the sjcl library loaded by the Kraken harness, which would require embedding the harness verbatim — a meaningful expansion of the single-file artifact. v5 carries SunSpider + the FMA-stress kernel + the WebGPU compute pass; later versions may include Kraken once the harness can be embedded cleanly, and a hand-crafted WebAssembly SIMD kernel (v128 FMA loops) is the natural next addition for v6 — the FMA-stress kernel relies on the engine's auto-vectorizer to pack independent scalar chains into ASIMD, which gets ≈ 60–80 % of the wattage a deliberately SIMD-shaped WASM module would draw.
5 · Run summary
| seconds at load | — |
| workers engaged | — |
| rounds completed | — |
| kernel time accrued | — |
| gpu pass | — |
Fig. 2. Run summary — aggregate execution figures.
5.1 · battery-mort · charge-cycle ledger
| MORT_COEFF_BATTERY | — |
| rated cycle life | — |
| estimated cycle draw (work-based) | — |
| estimated cycle draw (battery %) | — |
| battery-morts | — |
—
Fig. 3. Derivation of battery-mort. Tuned coefficient; math openly shown.
5.2 · thermal-mort · solder-fatigue ledger
| MORT_COEFF_THERMAL | — |
| rated thermal-cycle life | — |
| estimated thermal-cycle draw | — |
| thermal-morts | — |
—
Fig. 4. Derivation of thermal-mort. Same shape; different coefficient and denominator.
5.3 · Comparison
Comparison figures are derived from public power-consumption estimates for video calling (≈ 25 % / hr) and short-form video playback (≈ 30 % / hr). They are illustrative, not measured on this device.
5.4 · Per-kernel
Fig. 5. Per-kernel breakdown — rounds and in-kernel time, aggregated across worker threads.
The three SunSpider 1.0.2 kernel files are embedded verbatim further down in this page's HTML, after the modal markup. Their original BSD-3-Clause license headers are preserved. The benchmark runs from those embedded blocks by compiling each into a Function() inside a Web Worker; no source is fetched from the network.