Skip to content

Fix nested backtick formatting in template literal docs#284

Merged
frostney merged 1 commit into
mainfrom
docs/fix-backtick-formatting-283
Apr 12, 2026
Merged

Fix nested backtick formatting in template literal docs#284
frostney merged 1 commit into
mainfrom
docs/fix-backtick-formatting-283

Conversation

@frostney
Copy link
Copy Markdown
Owner

Summary

  • Replace escaped-backtick code span ( `tag\`...\ ) with double-backtick delimiters (``` tag...``` ```) on line 163 of docs/language-restrictions.md`
  • Fixes markdownlint MD038 warning and ensures consistent rendering across Markdown renderers

Closes #283

Testing

  • Verified the line renders correctly with double-backtick delimiters
  • No code changes — docs-only fix

🤖 Generated with Claude Code

Use double-backtick delimiters for the tagged template example so inner
backticks render as literal content and markdownlint MD038 passes.

Closes #283

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Apr 12, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 3772cbf9-67d5-49a5-ae2a-e9522a373f16

📥 Commits

Reviewing files that changed from the base of the PR and between b5ab652 and 556b7d0.

📒 Files selected for processing (1)
  • docs/language-restrictions.md

📝 Walkthrough

Walkthrough

A documentation formatting fix in docs/language-restrictions.md that replaces escaped-backtick syntax with double-backtick delimiters for the tagged template literal example, resolving markdownlint warnings and ensuring consistent rendering across Markdown renderers.

Changes

Cohort / File(s) Summary
Documentation Formatting
docs/language-restrictions.md
Updated template literal syntax example from tag\...` to ``tag...``` using double-backtick delimiters to resolve markdownlint MD038 warnings and improve cross-platform consistency.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~2 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately summarizes the main change: fixing nested backtick formatting in template literal documentation.
Description check ✅ Passed The description covers the change and includes testing verification, though the template requires more structured testing checkboxes.
Linked Issues check ✅ Passed The PR successfully addresses issue #283 by replacing escaped backticks with double-backtick delimiters on line 163 as required.
Out of Scope Changes check ✅ Passed The change is limited to a single-line documentation fix directly addressing the linked issue with no out-of-scope modifications.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions
Copy link
Copy Markdown
Contributor

Benchmark Results

364 benchmarks

Interpreted: 🟢 77 improved · 🔴 76 regressed · 211 unchanged · avg -0.1%
Bytecode: 🟢 148 improved · 🔴 116 regressed · 100 unchanged · avg +0.6%

arraybuffer.js — Interp: 🟢 5, 🔴 3, 6 unch. · avg +0.8% · Bytecode: 🟢 12, 🔴 1, 1 unch. · avg +8.0%
Benchmark Interpreted Δ Bytecode Δ
create ArrayBuffer(0) 456,141 ops/sec [454,124..457,404] → 460,056 ops/sec [398,653..463,556] ~ overlap (+0.9%) 519,985 ops/sec [513,041..521,901] → 589,971 ops/sec [585,681..597,288] 🟢 +13.5%
create ArrayBuffer(64) 433,221 ops/sec [432,505..435,295] → 441,872 ops/sec [439,731..442,664] 🟢 +2.0% 492,771 ops/sec [491,933..494,893] → 556,359 ops/sec [555,815..558,127] 🟢 +12.9%
create ArrayBuffer(1024) 344,003 ops/sec [342,039..345,286] → 340,225 ops/sec [338,346..341,530] 🔴 -1.1% 375,525 ops/sec [373,507..378,803] → 387,107 ops/sec [385,301..388,593] 🟢 +3.1%
create ArrayBuffer(8192) 153,832 ops/sec [153,000..154,002] → 152,602 ops/sec [152,061..153,419] ~ overlap (-0.8%) 163,228 ops/sec [162,729..164,030] → 145,905 ops/sec [129,526..149,390] 🔴 -10.6%
slice full buffer (64 bytes) 480,863 ops/sec [478,904..482,304] → 482,930 ops/sec [477,555..484,734] ~ overlap (+0.4%) 595,555 ops/sec [593,400..597,221] → 662,462 ops/sec [637,422..668,573] 🟢 +11.2%
slice half buffer (512 of 1024 bytes) 423,244 ops/sec [421,554..424,369] → 416,609 ops/sec [384,398..418,451] 🔴 -1.6% 513,075 ops/sec [510,489..514,239] → 565,163 ops/sec [563,620..569,616] 🟢 +10.2%
slice with negative indices 408,808 ops/sec [407,782..409,312] → 407,504 ops/sec [407,130..409,098] ~ overlap (-0.3%) 555,857 ops/sec [552,269..557,285] → 620,233 ops/sec [617,123..621,389] 🟢 +11.6%
slice empty range 464,320 ops/sec [451,549..467,034] → 461,067 ops/sec [458,943..463,839] ~ overlap (-0.7%) 577,775 ops/sec [573,394..579,210] → 644,251 ops/sec [641,597..648,368] 🟢 +11.5%
byteLength access 1,191,628 ops/sec [1,183,288..1,194,924] → 1,297,353 ops/sec [1,289,693..1,301,589] 🟢 +8.9% 1,721,146 ops/sec [1,716,753..1,724,067] → 1,955,631 ops/sec [1,951,606..1,957,541] 🟢 +13.6%
Symbol.toStringTag access 988,979 ops/sec [987,576..990,962] → 976,147 ops/sec [972,479..977,002] 🔴 -1.3% 1,075,469 ops/sec [1,070,293..1,079,653] → 1,188,654 ops/sec [1,188,339..1,191,480] 🟢 +10.5%
ArrayBuffer.isView 710,135 ops/sec [705,043..711,832] → 721,943 ops/sec [720,378..723,819] 🟢 +1.7% 847,547 ops/sec [844,752..849,345] → 942,187 ops/sec [941,829..942,361] 🟢 +11.2%
clone ArrayBuffer(64) 413,275 ops/sec [412,637..414,886] → 416,794 ops/sec [415,357..419,495] 🟢 +0.9% 497,544 ops/sec [496,057..498,741] → 534,716 ops/sec [533,589..536,588] 🟢 +7.5%
clone ArrayBuffer(1024) 324,552 ops/sec [320,413..326,260] → 329,465 ops/sec [327,870..330,931] 🟢 +1.5% 372,547 ops/sec [369,169..375,367] → 372,047 ops/sec [367,839..377,382] ~ overlap (-0.1%)
clone ArrayBuffer inside object 268,734 ops/sec [265,059..271,125] → 271,020 ops/sec [243,728..272,290] ~ overlap (+0.9%) 302,963 ops/sec [302,562..305,454] → 322,077 ops/sec [317,637..325,966] 🟢 +6.3%
arrays.js — Interp: 🟢 7, 🔴 2, 10 unch. · avg +0.7% · Bytecode: 🟢 15, 🔴 2, 2 unch. · avg +4.3%
Benchmark Interpreted Δ Bytecode Δ
Array.from length 100 12,965 ops/sec [12,921..13,004] → 13,172 ops/sec [12,991..13,214] ~ overlap (+1.6%) 16,939 ops/sec [16,802..17,023] → 17,259 ops/sec [17,216..17,414] 🟢 +1.9%
Array.from 10 elements 221,916 ops/sec [221,423..222,531] → 223,473 ops/sec [221,806..224,829] ~ overlap (+0.7%) 238,609 ops/sec [238,044..238,883] → 259,458 ops/sec [254,445..261,225] 🟢 +8.7%
Array.of 10 elements 268,839 ops/sec [268,263..269,838] → 274,763 ops/sec [274,213..275,153] 🟢 +2.2% 300,257 ops/sec [299,339..301,340] → 324,754 ops/sec [323,131..326,136] 🟢 +8.2%
spread into new array 348,646 ops/sec [347,114..349,918] → 334,912 ops/sec [307,637..336,165] 🔴 -3.9% 200,030 ops/sec [199,423..201,247] → 207,898 ops/sec [205,464..211,643] 🟢 +3.9%
map over 50 elements 24,484 ops/sec [24,285..24,587] → 24,557 ops/sec [24,448..24,845] ~ overlap (+0.3%) 33,344 ops/sec [33,167..33,553] → 33,367 ops/sec [33,154..33,611] ~ overlap (+0.1%)
filter over 50 elements 21,971 ops/sec [21,893..21,995] → 22,599 ops/sec [22,565..22,643] 🟢 +2.9% 26,865 ops/sec [26,529..27,085] → 31,578 ops/sec [31,510..31,716] 🟢 +17.5%
reduce sum 50 elements 25,812 ops/sec [25,704..25,916] → 25,969 ops/sec [25,908..26,052] ~ overlap (+0.6%) 31,939 ops/sec [31,873..32,000] → 31,918 ops/sec [31,762..31,968] ~ overlap (-0.1%)
forEach over 50 elements 22,887 ops/sec [22,773..22,904] → 22,841 ops/sec [22,763..22,994] ~ overlap (-0.2%) 33,625 ops/sec [33,532..33,796] → 32,249 ops/sec [32,021..32,324] 🔴 -4.1%
find in 50 elements 31,882 ops/sec [31,751..32,029] → 32,700 ops/sec [32,618..32,786] 🟢 +2.6% 47,768 ops/sec [47,704..47,819] → 47,869 ops/sec [47,821..48,029] 🟢 +0.2%
sort 20 elements 12,093 ops/sec [12,077..12,123] → 12,294 ops/sec [12,228..12,335] 🟢 +1.7% 16,941 ops/sec [16,870..16,957] → 17,947 ops/sec [17,668..18,025] 🟢 +5.9%
flat nested array 117,232 ops/sec [116,755..117,906] → 116,566 ops/sec [116,317..117,037] ~ overlap (-0.6%) 131,046 ops/sec [129,819..132,723] → 138,361 ops/sec [137,322..138,511] 🟢 +5.6%
flatMap 73,562 ops/sec [72,650..74,089] → 74,310 ops/sec [74,078..74,642] ~ overlap (+1.0%) 89,251 ops/sec [88,508..90,021] → 92,034 ops/sec [91,252..92,842] 🟢 +3.1%
map inside map (5x5) 20,160 ops/sec [20,044..20,235] → 20,307 ops/sec [20,291..20,352] 🟢 +0.7% 25,019 ops/sec [24,783..25,184] → 26,101 ops/sec [25,968..26,221] 🟢 +4.3%
filter inside map (5x10) 15,117 ops/sec [15,087..15,152] → 15,499 ops/sec [15,424..15,603] 🟢 +2.5% 18,168 ops/sec [18,048..18,376] → 20,714 ops/sec [20,619..20,921] 🟢 +14.0%
reduce inside map (5x10) 18,639 ops/sec [18,567..18,691] → 18,865 ops/sec [18,601..18,896] ~ overlap (+1.2%) 23,497 ops/sec [23,386..23,576] → 23,864 ops/sec [23,858..23,888] 🟢 +1.6%
forEach inside forEach (5x10) 16,527 ops/sec [16,464..16,566] → 16,276 ops/sec [16,226..16,326] 🔴 -1.5% 25,697 ops/sec [25,623..25,824] → 25,285 ops/sec [24,959..25,368] 🔴 -1.6%
find inside some (10x10) 13,125 ops/sec [13,111..13,147] → 13,297 ops/sec [13,274..13,356] 🟢 +1.3% 17,908 ops/sec [17,837..18,023] → 18,482 ops/sec [18,393..18,588] 🟢 +3.2%
map+filter chain nested (5x20) 5,073 ops/sec [5,060..5,080] → 5,113 ops/sec [4,694..5,178] ~ overlap (+0.8%) 6,436 ops/sec [6,380..6,497] → 6,954 ops/sec [6,922..6,979] 🟢 +8.1%
reduce flatten (10x5) 39,465 ops/sec [39,107..39,621] → 39,176 ops/sec [38,901..39,287] ~ overlap (-0.7%) 18,073 ops/sec [17,994..18,137] → 18,401 ops/sec [18,297..18,511] 🟢 +1.8%
async-await.js — Interp: 🟢 2, 🔴 1, 3 unch. · avg +0.7% · Bytecode: 🟢 6 · avg +9.5%
Benchmark Interpreted Δ Bytecode Δ
single await 381,255 ops/sec [380,367..381,999] → 381,554 ops/sec [376,229..382,950] ~ overlap (+0.1%) 401,562 ops/sec [400,928..401,829] → 445,146 ops/sec [441,079..446,796] 🟢 +10.9%
multiple awaits 169,616 ops/sec [168,913..169,773] → 174,137 ops/sec [157,157..174,866] ~ overlap (+2.7%) 171,885 ops/sec [169,762..173,429] → 194,787 ops/sec [193,672..196,679] 🟢 +13.3%
await non-Promise value 860,059 ops/sec [856,900..868,139] → 846,126 ops/sec [831,322..850,559] 🔴 -1.6% 1,183,880 ops/sec [1,172,359..1,188,745] → 1,281,520 ops/sec [1,275,771..1,297,848] 🟢 +8.2%
await with try/catch 370,178 ops/sec [367,844..370,718] → 369,257 ops/sec [366,022..369,927] ~ overlap (-0.2%) 397,149 ops/sec [395,514..398,584] → 441,566 ops/sec [440,040..444,627] 🟢 +11.2%
await Promise.all 50,729 ops/sec [50,504..50,834] → 51,893 ops/sec [51,418..51,939] 🟢 +2.3% 50,151 ops/sec [49,805..50,252] → 54,686 ops/sec [54,279..55,131] 🟢 +9.0%
nested async function call 194,474 ops/sec [193,859..194,786] → 196,020 ops/sec [195,274..197,651] 🟢 +0.8% 237,294 ops/sec [236,572..238,065] → 247,989 ops/sec [245,283..249,851] 🟢 +4.5%
base64.js — Interp: 🟢 2, 🔴 1, 7 unch. · avg -0.4% · Bytecode: 🟢 9, 🔴 1 · avg +7.1%
Benchmark Interpreted Δ Bytecode Δ
short ASCII (13 chars) 519,646 ops/sec [512,700..535,573] → 505,487 ops/sec [502,770..505,975] 🔴 -2.7% 619,922 ops/sec [617,471..621,583] → 676,424 ops/sec [640,374..679,818] 🟢 +9.1%
medium ASCII (450 chars) 148,095 ops/sec [147,710..148,555] → 147,911 ops/sec [147,207..148,553] ~ overlap (-0.1%) 155,726 ops/sec [155,276..155,782] → 148,537 ops/sec [148,114..152,804] 🔴 -4.6%
Latin-1 characters 536,889 ops/sec [519,394..542,156] → 521,776 ops/sec [519,706..524,612] ~ overlap (-2.8%) 633,018 ops/sec [630,329..639,011] → 703,029 ops/sec [696,791..705,697] 🟢 +11.1%
short base64 (20 chars) 387,383 ops/sec [384,107..393,369] → 384,576 ops/sec [376,014..386,037] ~ overlap (-0.7%) 439,838 ops/sec [439,246..440,818] → 482,079 ops/sec [480,472..482,504] 🟢 +9.6%
medium base64 (600 chars) 81,584 ops/sec [81,452..81,731] → 83,808 ops/sec [83,631..84,148] 🟢 +2.7% 84,350 ops/sec [84,115..84,489] → 89,499 ops/sec [88,793..91,094] 🟢 +6.1%
Latin-1 output 404,062 ops/sec [400,753..407,800] → 405,929 ops/sec [400,126..408,234] ~ overlap (+0.5%) 460,843 ops/sec [460,045..462,713] → 500,535 ops/sec [487,463..506,293] 🟢 +8.6%
forgiving (no padding) 431,962 ops/sec [430,119..439,011] → 427,406 ops/sec [421,841..437,864] ~ overlap (-1.1%) 448,389 ops/sec [447,728..450,287] → 488,902 ops/sec [487,253..489,668] 🟢 +9.0%
with whitespace 393,311 ops/sec [386,628..399,937] → 388,045 ops/sec [380,505..396,293] ~ overlap (-1.3%) 404,862 ops/sec [404,519..405,460] → 443,242 ops/sec [441,693..444,415] 🟢 +9.5%
atob(btoa(short)) 251,233 ops/sec [250,848..251,890] → 250,071 ops/sec [249,045..251,523] ~ overlap (-0.5%) 269,548 ops/sec [268,718..270,411] → 297,390 ops/sec [296,262..298,474] 🟢 +10.3%
atob(btoa(medium)) 54,043 ops/sec [53,875..54,117] → 55,008 ops/sec [54,914..55,125] 🟢 +1.8% 55,327 ops/sec [54,519..55,522] → 56,540 ops/sec [56,319..56,601] 🟢 +2.2%
classes.js — Interp: 🟢 6, 🔴 8, 17 unch. · avg -0.1% · Bytecode: 🟢 7, 🔴 9, 15 unch. · avg -2.1%
Benchmark Interpreted Δ Bytecode Δ
simple class new 141,672 ops/sec [140,890..142,306] → 143,167 ops/sec [142,446..143,645] 🟢 +1.1% 215,713 ops/sec [213,180..216,814] → 220,486 ops/sec [218,166..224,075] 🟢 +2.2%
class with defaults 112,726 ops/sec [111,999..113,080] → 112,633 ops/sec [112,362..112,909] ~ overlap (-0.1%) 144,116 ops/sec [142,874..145,041] → 148,839 ops/sec [146,528..152,146] 🟢 +3.3%
50 instances via Array.from 5,625 ops/sec [5,614..5,638] → 5,693 ops/sec [5,660..5,715] 🟢 +1.2% 8,672 ops/sec [8,592..8,730] → 9,003 ops/sec [8,987..9,011] 🟢 +3.8%
instance method call 71,682 ops/sec [71,434..71,963] → 70,864 ops/sec [70,511..71,093] 🔴 -1.1% 99,926 ops/sec [99,087..100,151] → 106,422 ops/sec [105,682..106,682] 🟢 +6.5%
static method call 113,131 ops/sec [112,166..113,809] → 113,911 ops/sec [113,357..114,677] ~ overlap (+0.7%) 192,735 ops/sec [191,324..194,419] → 204,744 ops/sec [203,439..205,325] 🟢 +6.2%
single-level inheritance 56,474 ops/sec [56,260..56,512] → 56,642 ops/sec [56,447..56,778] ~ overlap (+0.3%) 75,030 ops/sec [74,371..75,553] → 76,238 ops/sec [73,968..77,128] ~ overlap (+1.6%)
two-level inheritance 48,466 ops/sec [48,362..48,551] → 48,892 ops/sec [48,632..48,973] 🟢 +0.9% 61,148 ops/sec [59,572..61,771] → 62,360 ops/sec [60,171..64,009] ~ overlap (+2.0%)
private field access 71,531 ops/sec [70,982..71,568] → 72,486 ops/sec [72,401..72,583] 🟢 +1.3% 97,584 ops/sec [97,206..98,202] → 100,154 ops/sec [99,827..100,901] 🟢 +2.6%
private methods 79,638 ops/sec [78,965..79,723] → 79,537 ops/sec [77,485..79,672] ~ overlap (-0.1%) 103,150 ops/sec [101,749..103,878] → 104,649 ops/sec [103,228..106,917] ~ overlap (+1.5%)
getter/setter access 76,400 ops/sec [76,121..76,772] → 76,984 ops/sec [75,383..77,273] ~ overlap (+0.8%) 113,123 ops/sec [111,272..114,319] → 113,997 ops/sec [112,780..114,450] ~ overlap (+0.8%)
class decorator (identity) 93,555 ops/sec [93,077..94,546] → 95,727 ops/sec [94,638..96,146] 🟢 +2.3% 105,379 ops/sec [104,952..106,723] → 114,774 ops/sec [112,106..118,543] 🟢 +8.9%
class decorator (wrapping) 56,041 ops/sec [55,612..56,377] → 56,405 ops/sec [56,339..56,538] ~ overlap (+0.6%) 61,583 ops/sec [59,520..63,136] → 58,441 ops/sec [57,855..58,671] 🔴 -5.1%
identity method decorator 66,554 ops/sec [66,047..67,011] → 67,350 ops/sec [66,363..67,920] ~ overlap (+1.2%) 88,904 ops/sec [84,724..93,591] → 90,395 ops/sec [80,677..98,153] ~ overlap (+1.7%)
wrapping method decorator 53,546 ops/sec [53,278..53,709] → 54,037 ops/sec [53,631..54,209] ~ overlap (+0.9%) 64,987 ops/sec [61,421..72,055] → 64,134 ops/sec [59,619..70,303] ~ overlap (-1.3%)
stacked method decorators (x3) 35,611 ops/sec [35,400..35,968] → 36,854 ops/sec [36,617..37,154] 🟢 +3.5% 43,788 ops/sec [41,802..47,569] → 49,525 ops/sec [45,096..53,135] ~ overlap (+13.1%)
identity field decorator 74,391 ops/sec [73,820..75,142] → 72,867 ops/sec [72,548..73,113] 🔴 -2.0% 84,758 ops/sec [78,197..92,692] → 73,507 ops/sec [72,240..75,137] 🔴 -13.3%
field initializer decorator 61,447 ops/sec [60,995..61,617] → 60,910 ops/sec [60,485..61,014] ~ overlap (-0.9%) 65,631 ops/sec [64,143..68,820] → 64,463 ops/sec [60,462..67,384] ~ overlap (-1.8%)
getter decorator (identity) 68,394 ops/sec [68,131..68,789] → 66,700 ops/sec [66,405..67,005] 🔴 -2.5% 76,687 ops/sec [76,002..78,351] → 76,082 ops/sec [75,249..77,232] ~ overlap (-0.8%)
setter decorator (identity) 56,116 ops/sec [55,967..56,306] → 55,687 ops/sec [54,957..56,040] ~ overlap (-0.8%) 62,591 ops/sec [62,170..62,687] → 60,802 ops/sec [60,016..60,942] 🔴 -2.9%
static method decorator 72,435 ops/sec [72,026..72,740] → 71,815 ops/sec [71,258..72,555] ~ overlap (-0.9%) 86,285 ops/sec [84,049..91,514] → 78,875 ops/sec [77,293..85,521] ~ overlap (-8.6%)
static field decorator 84,774 ops/sec [83,685..85,333] → 85,276 ops/sec [84,517..85,608] ~ overlap (+0.6%) 100,528 ops/sec [90,591..110,106] → 81,819 ops/sec [76,828..89,051] 🔴 -18.6%
private method decorator 54,108 ops/sec [54,021..54,244] → 53,166 ops/sec [46,917..54,494] ~ overlap (-1.7%) 70,350 ops/sec [69,675..73,779] → 69,710 ops/sec [66,416..73,262] ~ overlap (-0.9%)
private field decorator 60,273 ops/sec [59,527..60,409] → 60,200 ops/sec [52,525..60,740] ~ overlap (-0.1%) 63,045 ops/sec [62,404..66,084] → 59,914 ops/sec [58,825..62,391] 🔴 -5.0%
plain auto-accessor (no decorator) 105,518 ops/sec [104,309..108,994] → 106,508 ops/sec [104,398..109,215] ~ overlap (+0.9%) 98,028 ops/sec [96,118..102,201] → 93,260 ops/sec [91,259..101,275] ~ overlap (-4.9%)
auto-accessor with decorator 56,284 ops/sec [55,133..57,197] → 56,556 ops/sec [54,953..57,734] ~ overlap (+0.5%) 60,376 ops/sec [55,271..63,929] → 56,146 ops/sec [51,590..60,745] ~ overlap (-7.0%)
decorator writing metadata 44,842 ops/sec [44,653..45,078] → 44,917 ops/sec [43,662..45,255] ~ overlap (+0.2%) 49,089 ops/sec [48,070..51,534] → 47,825 ops/sec [46,567..52,158] ~ overlap (-2.6%)
static getter read 130,349 ops/sec [129,875..130,707] → 127,427 ops/sec [126,352..129,531] 🔴 -2.2% 170,332 ops/sec [168,490..171,042] → 152,858 ops/sec [151,789..155,924] 🔴 -10.3%
static getter/setter pair 99,569 ops/sec [99,270..100,296] → 97,179 ops/sec [78,400..98,029] 🔴 -2.4% 129,537 ops/sec [127,212..131,188] → 118,401 ops/sec [117,234..120,310] 🔴 -8.6%
inherited static getter 78,791 ops/sec [78,011..79,436] → 77,319 ops/sec [77,029..77,679] 🔴 -1.9% 97,805 ops/sec [97,290..98,703] → 82,588 ops/sec [81,759..83,556] 🔴 -15.6%
inherited static setter 84,154 ops/sec [83,031..84,239] → 82,664 ops/sec [81,492..83,016] 🔴 -1.8% 104,334 ops/sec [102,518..106,637] → 99,430 ops/sec [97,906..104,243] ~ overlap (-4.7%)
inherited static getter with this binding 72,504 ops/sec [72,359..72,621] → 71,066 ops/sec [70,441..71,657] 🔴 -2.0% 90,307 ops/sec [89,409..90,688] → 82,726 ops/sec [81,745..83,557] 🔴 -8.4%
closures.js — Interp: 🔴 3, 8 unch. · avg -0.8% · Bytecode: 🟢 2, 🔴 6, 3 unch. · avg -3.0%
Benchmark Interpreted Δ Bytecode Δ
closure over single variable 132,193 ops/sec [131,390..132,811] → 132,377 ops/sec [131,799..132,956] ~ overlap (+0.1%) 335,422 ops/sec [329,994..337,721] → 321,640 ops/sec [317,320..325,659] 🔴 -4.1%
closure over multiple variables 117,755 ops/sec [116,995..117,940] → 117,206 ops/sec [116,422..118,136] ~ overlap (-0.5%) 326,013 ops/sec [324,987..328,322] → 311,592 ops/sec [302,734..312,118] 🔴 -4.4%
nested closures 125,101 ops/sec [124,673..125,216] → 125,049 ops/sec [124,678..126,183] ~ overlap (-0.0%) 295,877 ops/sec [289,589..302,042] → 281,886 ops/sec [279,443..289,265] 🔴 -4.7%
function as argument 91,055 ops/sec [90,800..91,518] → 90,121 ops/sec [89,985..90,837] ~ overlap (-1.0%) 326,499 ops/sec [322,235..331,576] → 312,262 ops/sec [311,066..313,999] 🔴 -4.4%
function returning function 114,810 ops/sec [114,162..114,966] → 114,390 ops/sec [113,803..115,179] ~ overlap (-0.4%) 355,548 ops/sec [342,145..361,662] → 350,365 ops/sec [343,886..370,004] ~ overlap (-1.5%)
compose two functions 70,038 ops/sec [69,945..70,117] → 68,929 ops/sec [68,663..69,609] 🔴 -1.6% 198,433 ops/sec [196,480..201,501] → 183,151 ops/sec [179,022..197,316] ~ overlap (-7.7%)
fn.call 147,129 ops/sec [145,728..147,384] → 144,748 ops/sec [142,923..145,781] ~ overlap (-1.6%) 224,124 ops/sec [218,897..231,966] → 219,823 ops/sec [219,158..221,021] ~ overlap (-1.9%)
fn.apply 111,277 ops/sec [110,795..111,364] → 109,798 ops/sec [92,553..110,832] ~ overlap (-1.3%) 206,223 ops/sec [205,460..206,584] → 188,324 ops/sec [187,252..189,141] 🔴 -8.7%
fn.bind 137,096 ops/sec [135,983..137,373] → 137,537 ops/sec [137,107..138,407] ~ overlap (+0.3%) 376,463 ops/sec [375,356..377,464] → 366,802 ops/sec [364,523..369,501] 🔴 -2.6%
recursive sum to 50 11,756 ops/sec [11,730..11,800] → 11,539 ops/sec [11,466..11,598] 🔴 -1.8% 49,083 ops/sec [48,541..49,206] → 50,402 ops/sec [50,021..50,602] 🟢 +2.7%
recursive tree traversal 20,136 ops/sec [20,064..20,179] → 20,034 ops/sec [19,196..20,061] 🔴 -0.5% 43,664 ops/sec [43,522..43,906] → 45,286 ops/sec [45,025..45,832] 🟢 +3.7%
collections.js — Interp: 🟢 7, 🔴 1, 4 unch. · avg +0.2% · Bytecode: 🟢 9, 🔴 3 · avg +3.3%
Benchmark Interpreted Δ Bytecode Δ
add 50 elements 6,795 ops/sec [6,791..6,797] → 6,860 ops/sec [6,827..6,904] 🟢 +1.0% 7,489 ops/sec [7,457..7,502] → 7,813 ops/sec [7,778..7,828] 🟢 +4.3%
has lookup (50 elements) 87,490 ops/sec [87,113..87,725] → 88,505 ops/sec [88,169..88,760] 🟢 +1.2% 97,475 ops/sec [97,354..97,600] → 104,358 ops/sec [104,214..104,496] 🟢 +7.1%
delete elements 46,981 ops/sec [46,665..47,268] → 47,672 ops/sec [47,302..47,914] 🟢 +1.5% 50,124 ops/sec [49,068..50,227] → 52,882 ops/sec [51,033..52,939] 🟢 +5.5%
forEach iteration 14,898 ops/sec [14,835..15,000] → 15,408 ops/sec [15,248..15,496] 🟢 +3.4% 20,902 ops/sec [20,783..20,944] → 23,013 ops/sec [22,798..23,140] 🟢 +10.1%
spread to array 29,030 ops/sec [28,789..29,094] → 28,862 ops/sec [28,646..28,967] ~ overlap (-0.6%) 217,817 ops/sec [215,127..218,474] → 210,688 ops/sec [209,991..213,385] 🔴 -3.3%
deduplicate array 38,544 ops/sec [38,426..38,605] → 38,192 ops/sec [37,884..38,624] ~ overlap (-0.9%) 72,444 ops/sec [72,037..72,664] → 74,664 ops/sec [73,795..75,204] 🟢 +3.1%
set 50 entries 5,168 ops/sec [5,142..5,186] → 5,174 ops/sec [5,156..5,194] ~ overlap (+0.1%) 5,965 ops/sec [5,853..5,985] → 5,762 ops/sec [5,716..5,817] 🔴 -3.4%
get lookup (50 entries) 85,535 ops/sec [85,363..85,795] → 86,803 ops/sec [86,583..86,967] 🟢 +1.5% 88,687 ops/sec [88,390..88,742] → 94,851 ops/sec [94,686..95,144] 🟢 +7.0%
has check 127,069 ops/sec [126,574..127,739] → 129,784 ops/sec [129,403..129,876] 🟢 +2.1% 135,337 ops/sec [134,942..135,538] → 146,823 ops/sec [146,482..147,056] 🟢 +8.5%
delete entries 45,704 ops/sec [45,599..45,801] → 46,423 ops/sec [46,195..46,643] 🟢 +1.6% 46,475 ops/sec [46,356..46,500] → 48,372 ops/sec [47,825..48,950] 🟢 +4.1%
forEach iteration 15,112 ops/sec [15,016..15,223] → 14,918 ops/sec [14,704..15,278] ~ overlap (-1.3%) 21,517 ops/sec [21,395..21,556] → 23,698 ops/sec [23,581..23,850] 🟢 +10.1%
keys/values/entries 8,156 ops/sec [8,112..8,269] → 7,615 ops/sec [7,246..7,750] 🔴 -6.6% 27,447 ops/sec [26,984..27,679] → 23,864 ops/sec [23,823..23,964] 🔴 -13.1%
destructuring.js — Interp: 🟢 1, 🔴 9, 12 unch. · avg -1.5% · Bytecode: 🔴 20, 2 unch. · avg -6.7%
Benchmark Interpreted Δ Bytecode Δ
simple array destructuring 385,682 ops/sec [384,229..387,194] → 378,677 ops/sec [375,762..380,639] 🔴 -1.8% 281,033 ops/sec [277,962..285,182] → 249,749 ops/sec [248,290..253,455] 🔴 -11.1%
with rest element 252,322 ops/sec [251,256..253,707] → 216,430 ops/sec [173,165..240,548] 🔴 -14.2% 216,113 ops/sec [214,147..217,673] → 190,391 ops/sec [187,566..192,411] 🔴 -11.9%
with defaults 402,618 ops/sec [394,755..406,745] → 368,959 ops/sec [324,280..374,501] 🔴 -8.4% 326,224 ops/sec [321,050..330,183] → 296,688 ops/sec [295,077..297,950] 🔴 -9.1%
skip elements 406,331 ops/sec [405,152..409,071] → 405,735 ops/sec [388,571..411,856] ~ overlap (-0.1%) 299,718 ops/sec [297,131..300,817] → 272,432 ops/sec [271,509..272,765] 🔴 -9.1%
nested array destructuring 173,346 ops/sec [172,664..174,595] → 169,274 ops/sec [167,135..171,735] 🔴 -2.3% 92,952 ops/sec [91,852..94,484] → 82,759 ops/sec [81,635..83,776] 🔴 -11.0%
swap variables 519,838 ops/sec [515,955..522,554] → 494,951 ops/sec [492,728..499,443] 🔴 -4.8% 348,795 ops/sec [346,697..352,321] → 317,881 ops/sec [316,748..318,562] 🔴 -8.9%
simple object destructuring 303,220 ops/sec [298,422..305,162] → 305,861 ops/sec [304,542..311,219] ~ overlap (+0.9%) 404,045 ops/sec [396,623..408,633] → 380,431 ops/sec [373,511..386,138] 🔴 -5.8%
with defaults 344,027 ops/sec [341,753..347,293] → 337,658 ops/sec [334,034..340,830] 🔴 -1.9% 556,344 ops/sec [552,606..558,439] → 542,450 ops/sec [537,403..549,897] 🔴 -2.5%
with renaming 335,800 ops/sec [334,704..337,536] → 330,093 ops/sec [323,777..330,689] 🔴 -1.7% 416,617 ops/sec [414,180..418,664] → 396,565 ops/sec [394,006..397,956] 🔴 -4.8%
nested object destructuring 158,683 ops/sec [158,211..160,025] → 156,718 ops/sec [155,675..157,076] 🔴 -1.2% 186,374 ops/sec [184,771..188,181] → 172,723 ops/sec [171,799..172,856] 🔴 -7.3%
rest properties 187,489 ops/sec [186,100..189,049] → 182,652 ops/sec [181,556..183,370] 🔴 -2.6% 182,940 ops/sec [182,073..183,788] → 172,377 ops/sec [171,639..172,853] 🔴 -5.8%
object parameter 95,031 ops/sec [94,276..95,397] → 94,324 ops/sec [93,161..95,497] ~ overlap (-0.7%) 152,217 ops/sec [151,020..153,710] → 142,934 ops/sec [141,817..142,991] 🔴 -6.1%
array parameter 119,559 ops/sec [118,713..121,081] → 120,149 ops/sec [117,643..121,130] ~ overlap (+0.5%) 128,736 ops/sec [127,220..129,707] → 116,812 ops/sec [115,931..117,676] 🔴 -9.3%
mixed destructuring in map 32,784 ops/sec [32,655..32,884] → 32,631 ops/sec [32,475..33,324] ~ overlap (-0.5%) 45,401 ops/sec [45,185..45,621] → 43,520 ops/sec [43,121..43,557] 🔴 -4.1%
forEach with array destructuring 63,695 ops/sec [63,075..64,051] → 64,682 ops/sec [63,782..64,972] ~ overlap (+1.6%) 48,942 ops/sec [48,718..49,210] → 47,575 ops/sec [47,178..48,012] 🔴 -2.8%
map with array destructuring 63,580 ops/sec [63,346..63,873] → 63,991 ops/sec [62,827..64,400] ~ overlap (+0.6%) 45,945 ops/sec [45,629..46,311] → 40,946 ops/sec [40,755..41,033] 🔴 -10.9%
filter with array destructuring 66,016 ops/sec [65,591..66,505] → 67,349 ops/sec [65,630..67,754] ~ overlap (+2.0%) 47,915 ops/sec [47,152..48,205] → 46,653 ops/sec [46,328..47,542] ~ overlap (-2.6%)
reduce with array destructuring 72,694 ops/sec [72,209..73,170] → 73,296 ops/sec [72,154..73,890] ~ overlap (+0.8%) 50,322 ops/sec [49,935..50,686] → 44,910 ops/sec [44,449..45,690] 🔴 -10.8%
map with object destructuring 72,138 ops/sec [71,827..72,363] → 72,156 ops/sec [70,420..72,504] ~ overlap (+0.0%) 96,979 ops/sec [92,929..97,428] → 98,000 ops/sec [97,357..98,479] ~ overlap (+1.1%)
map with nested destructuring 60,808 ops/sec [60,535..61,000] → 61,425 ops/sec [61,305..61,994] 🟢 +1.0% 90,810 ops/sec [90,305..91,025] → 85,052 ops/sec [84,810..85,972] 🔴 -6.3%
map with rest in destructuring 41,953 ops/sec [41,398..42,251] → 41,408 ops/sec [31,154..41,960] ~ overlap (-1.3%) 26,246 ops/sec [26,177..26,392] → 25,378 ops/sec [25,224..25,543] 🔴 -3.3%
map with defaults in destructuring 56,238 ops/sec [56,057..56,437] → 56,429 ops/sec [55,544..56,555] ~ overlap (+0.3%) 77,908 ops/sec [75,254..78,405] → 74,583 ops/sec [74,424..74,980] 🔴 -4.3%
fibonacci.js — Interp: 🟢 3, 🔴 1, 4 unch. · avg +1.4% · Bytecode: 🟢 3, 🔴 2, 3 unch. · avg +2.9%
Benchmark Interpreted Δ Bytecode Δ
recursive fib(15) 309 ops/sec [309..312] → 329 ops/sec [328..332] 🟢 +6.4% 1,409 ops/sec [1,403..1,411] → 1,528 ops/sec [1,524..1,530] 🟢 +8.5%
recursive fib(20) 28 ops/sec [28..28] → 28 ops/sec [28..29] ~ overlap (+0.5%) 126 ops/sec [126..127] → 138 ops/sec [138..138] 🟢 +9.2%
recursive fib(15) typed 313 ops/sec [310..316] → 331 ops/sec [326..334] 🟢 +5.5% 1,124 ops/sec [1,120..1,130] → 1,130 ops/sec [1,126..1,135] ~ overlap (+0.6%)
recursive fib(20) typed 28 ops/sec [28..28] → 29 ops/sec [28..29] 🟢 +1.5% 102 ops/sec [102..102] → 110 ops/sec [110..110] 🟢 +8.1%
iterative fib(20) via reduce 12,017 ops/sec [11,985..12,044] → 12,093 ops/sec [12,024..12,169] ~ overlap (+0.6%) 20,605 ops/sec [20,529..20,649] → 19,547 ops/sec [19,395..19,622] 🔴 -5.1%
iterator fib(20) 9,678 ops/sec [9,617..9,691] → 9,523 ops/sec [9,440..9,562] 🔴 -1.6% 19,129 ops/sec [18,910..19,394] → 19,255 ops/sec [18,621..19,668] ~ overlap (+0.7%)
iterator fib(20) via Iterator.from + take 15,602 ops/sec [15,482..15,744] → 15,382 ops/sec [15,282..15,681] ~ overlap (-1.4%) 20,517 ops/sec [20,152..21,022] → 21,293 ops/sec [20,838..21,588] ~ overlap (+3.8%)
iterator fib(20) last value via reduce 11,535 ops/sec [11,496..11,554] → 11,529 ops/sec [11,434..11,578] ~ overlap (-0.1%) 15,185 ops/sec [15,025..15,259] → 14,870 ops/sec [14,688..15,012] 🔴 -2.1%
float16array.js — Interp: 🟢 10, 🔴 6, 16 unch. · avg +1.1% · Bytecode: 🟢 13, 🔴 14, 5 unch. · avg -1.0%
Benchmark Interpreted Δ Bytecode Δ
new Float16Array(0) 327,338 ops/sec [324,954..330,314] → 348,641 ops/sec [347,112..350,081] 🟢 +6.5% 366,744 ops/sec [363,701..370,031] → 373,293 ops/sec [369,296..377,105] ~ overlap (+1.8%)
new Float16Array(100) 308,798 ops/sec [307,871..310,103] → 318,450 ops/sec [306,246..319,529] ~ overlap (+3.1%) 342,117 ops/sec [339,162..347,756] → 351,948 ops/sec [350,195..356,530] 🟢 +2.9%
new Float16Array(1000) 233,096 ops/sec [230,565..234,718] → 238,214 ops/sec [236,724..240,242] 🟢 +2.2% 245,944 ops/sec [244,128..249,494] → 235,064 ops/sec [226,265..236,350] 🔴 -4.4%
Float16Array.from([...100]) 145,219 ops/sec [144,110..146,345] → 137,772 ops/sec [137,031..138,614] 🔴 -5.1% 157,109 ops/sec [156,626..157,540] → 173,405 ops/sec [172,908..174,523] 🟢 +10.4%
Float16Array.of(1.5, 2.5, 3.5, 4.5, 5.5) 289,265 ops/sec [285,647..291,861] → 292,376 ops/sec [289,649..294,260] ~ overlap (+1.1%) 242,176 ops/sec [241,657..243,587] → 230,009 ops/sec [227,332..231,239] 🔴 -5.0%
new Float16Array(float64Array) 200,499 ops/sec [200,155..201,202] → 200,300 ops/sec [199,164..201,178] ~ overlap (-0.1%) 216,627 ops/sec [212,715..218,177] → 215,312 ops/sec [214,145..215,840] ~ overlap (-0.6%)
sequential write 100 elements 3,373 ops/sec [3,369..3,376] → 3,370 ops/sec [3,315..3,405] ~ overlap (-0.1%) 10,537 ops/sec [10,492..10,623] → 10,864 ops/sec [10,759..10,958] 🟢 +3.1%
sequential read 100 elements 3,656 ops/sec [3,636..3,668] → 3,644 ops/sec [3,554..3,657] ~ overlap (-0.3%) 14,684 ops/sec [14,619..14,720] → 10,327 ops/sec [10,265..10,354] 🔴 -29.7%
write special values (NaN, Inf, -0) 191,409 ops/sec [189,648..195,338] → 197,988 ops/sec [196,009..198,541] 🟢 +3.4% 312,664 ops/sec [308,488..315,946] → 345,516 ops/sec [343,808..347,155] 🟢 +10.5%
Float16Array write 3,320 ops/sec [3,303..3,348] → 3,337 ops/sec [3,316..3,373] ~ overlap (+0.5%) 10,730 ops/sec [10,441..10,767] → 10,793 ops/sec [10,671..10,844] ~ overlap (+0.6%)
Float32Array write 3,368 ops/sec [3,360..3,377] → 3,369 ops/sec [3,333..3,379] ~ overlap (+0.0%) 10,686 ops/sec [10,567..10,726] → 10,791 ops/sec [10,765..10,834] 🟢 +1.0%
Float64Array write 3,376 ops/sec [3,344..3,410] → 3,375 ops/sec [3,327..3,434] ~ overlap (-0.0%) 10,813 ops/sec [10,709..10,999] → 10,661 ops/sec [10,646..10,743] ~ overlap (-1.4%)
Float16Array read 3,467 ops/sec [3,428..3,507] → 3,403 ops/sec [3,376..3,458] ~ overlap (-1.8%) 13,491 ops/sec [13,371..13,570] → 10,808 ops/sec [10,759..10,926] 🔴 -19.9%
Float32Array read 3,551 ops/sec [3,547..3,558] → 3,524 ops/sec [3,373..3,537] 🔴 -0.8% 15,483 ops/sec [15,170..15,531] → 11,601 ops/sec [11,559..11,744] 🔴 -25.1%
Float64Array read 3,567 ops/sec [3,553..3,583] → 3,491 ops/sec [3,413..3,545] 🔴 -2.1% 15,165 ops/sec [14,957..15,329] → 11,923 ops/sec [11,893..12,059] 🔴 -21.4%
fill(1.5) 42,267 ops/sec [42,121..42,379] → 41,512 ops/sec [41,279..41,965] 🔴 -1.8% 42,479 ops/sec [42,438..42,538] → 42,766 ops/sec [42,703..43,022] 🟢 +0.7%
slice() 134,782 ops/sec [134,134..135,598] → 143,087 ops/sec [141,715..143,638] 🟢 +6.2% 146,716 ops/sec [143,805..147,285] → 137,655 ops/sec [137,304..138,080] 🔴 -6.2%
map(x => x * 2) 7,236 ops/sec [7,188..7,266] → 7,325 ops/sec [7,221..7,353] ~ overlap (+1.2%) 7,511 ops/sec [7,353..7,547] → 9,442 ops/sec [9,399..9,516] 🟢 +25.7%
filter(x => x > 25) 7,416 ops/sec [7,345..7,428] → 7,499 ops/sec [7,476..7,516] 🟢 +1.1% 7,979 ops/sec [7,937..7,994] → 10,247 ops/sec [10,225..10,277] 🟢 +28.4%
reduce (sum) 7,302 ops/sec [7,256..7,350] → 7,461 ops/sec [7,445..7,526] 🟢 +2.2% 6,888 ops/sec [6,859..6,955] → 8,489 ops/sec [8,469..8,523] 🟢 +23.2%
sort() 27,580 ops/sec [27,563..27,602] → 27,594 ops/sec [27,350..27,680] ~ overlap (+0.1%) 22,008 ops/sec [21,994..22,014] → 20,879 ops/sec [20,855..20,900] 🔴 -5.1%
indexOf() 178,243 ops/sec [176,869..178,926] → 177,883 ops/sec [175,865..180,036] ~ overlap (-0.2%) 156,139 ops/sec [156,046..156,294] → 149,279 ops/sec [149,104..149,653] 🔴 -4.4%
reverse() 183,920 ops/sec [183,486..184,294] → 192,207 ops/sec [190,973..192,622] 🟢 +4.5% 198,847 ops/sec [198,627..198,995] → 174,497 ops/sec [174,031..174,707] 🔴 -12.2%
toReversed() 76,050 ops/sec [75,538..76,337] → 82,479 ops/sec [82,259..82,590] 🟢 +8.5% 71,905 ops/sec [71,608..72,046] → 64,519 ops/sec [64,259..64,624] 🔴 -10.3%
toSorted() 1,012 ops/sec [1,012..1,013] → 1,039 ops/sec [1,038..1,040] 🟢 +2.7% 811 ops/sec [808..812] → 740 ops/sec [738..741] 🔴 -8.8%
create view over existing buffer 379,906 ops/sec [372,122..380,950] → 404,271 ops/sec [401,791..408,562] 🟢 +6.4% 448,624 ops/sec [445,211..450,046] → 475,592 ops/sec [473,491..478,943] 🟢 +6.0%
subarray() 420,511 ops/sec [417,465..422,901] → 417,940 ops/sec [415,768..419,577] ~ overlap (-0.6%) 575,659 ops/sec [570,443..580,561] → 578,928 ops/sec [575,032..581,700] ~ overlap (+0.6%)
set() from array 524,578 ops/sec [518,007..532,477] → 537,045 ops/sec [518,474..542,196] ~ overlap (+2.4%) 608,011 ops/sec [606,580..610,099] → 664,235 ops/sec [659,965..665,222] 🟢 +9.2%
for-of loop 4,957 ops/sec [4,910..5,001] → 4,775 ops/sec [4,622..4,847] 🔴 -3.7% 19,952 ops/sec [19,882..19,999] → 18,472 ops/sec [18,410..18,647] 🔴 -7.4%
spread into array 16,811 ops/sec [16,751..16,845] → 16,250 ops/sec [16,081..16,472] 🔴 -3.3% 93,468 ops/sec [91,987..96,022] → 90,107 ops/sec [88,859..90,310] 🔴 -3.6%
f16round(1.337) 666,103 ops/sec [659,333..670,725] → 675,851 ops/sec [646,177..687,434] ~ overlap (+1.5%) 674,939 ops/sec [659,112..678,104] → 692,391 ops/sec [690,737..693,678] 🟢 +2.6%
f16round over 100 values 3,442 ops/sec [3,410..3,482] → 3,503 ops/sec [3,473..3,513] ~ overlap (+1.8%) 7,587 ops/sec [7,519..7,641] → 7,987 ops/sec [7,894..8,070] 🟢 +5.3%
for-of.js — Interp: 🔴 3, 4 unch. · avg -1.1% · Bytecode: 🔴 5, 2 unch. · avg -4.0%
Benchmark Interpreted Δ Bytecode Δ
for...of with 10-element array 45,862 ops/sec [45,275..46,136] → 45,028 ops/sec [44,485..45,384] ~ overlap (-1.8%) 298,452 ops/sec [296,843..299,177] → 292,617 ops/sec [289,471..295,566] 🔴 -2.0%
for...of with 100-element array 5,246 ops/sec [5,233..5,288] → 5,151 ops/sec [5,106..5,171] 🔴 -1.8% 37,209 ops/sec [36,641..38,595] → 36,969 ops/sec [36,634..37,198] ~ overlap (-0.6%)
for...of with string (10 chars) 33,057 ops/sec [32,703..33,124] → 32,998 ops/sec [32,827..33,205] ~ overlap (-0.2%) 85,410 ops/sec [85,098..85,672] → 82,434 ops/sec [82,344..82,767] 🔴 -3.5%
for...of with Set (10 elements) 45,879 ops/sec [45,480..46,040] → 45,177 ops/sec [44,735..45,236] 🔴 -1.5% 265,683 ops/sec [259,964..267,739] → 261,886 ops/sec [260,687..263,626] ~ overlap (-1.4%)
for...of with Map entries (10 entries) 29,295 ops/sec [29,143..29,722] → 28,381 ops/sec [24,779..29,061] 🔴 -3.1% 33,814 ops/sec [33,297..34,345] → 30,579 ops/sec [30,092..30,917] 🔴 -9.6%
for...of with destructuring 38,724 ops/sec [37,923..38,911] → 38,940 ops/sec [38,437..39,243] ~ overlap (+0.6%) 46,896 ops/sec [46,674..47,183] → 43,900 ops/sec [41,830..44,581] 🔴 -6.4%
for-await-of with sync array 43,784 ops/sec [43,625..44,026] → 43,745 ops/sec [42,523..44,254] ~ overlap (-0.1%) 194,658 ops/sec [192,085..195,357] → 185,837 ops/sec [185,029..186,844] 🔴 -4.5%
helpers/bench-module.js — Interp: 0 · Bytecode: 0
Benchmark Interpreted Δ Bytecode Δ
iterators.js — Interp: 🟢 6, 🔴 7, 29 unch. · avg -0.5% · Bytecode: 🟢 8, 🔴 21, 13 unch. · avg -2.1%
Benchmark Interpreted Δ Bytecode Δ
Iterator.from({next}).toArray() — 20 elements 15,619 ops/sec [15,529..15,664] → 15,162 ops/sec [14,913..15,336] 🔴 -2.9% 20,789 ops/sec [20,664..20,984] → 20,468 ops/sec [20,225..20,760] ~ overlap (-1.5%)
Iterator.from({next}).toArray() — 50 elements 6,772 ops/sec [6,748..6,819] → 6,623 ops/sec [6,595..6,771] ~ overlap (-2.2%) 9,357 ops/sec [9,266..9,508] → 9,468 ops/sec [9,402..9,484] ~ overlap (+1.2%)
spread pre-wrapped iterator — 20 elements 11,659 ops/sec [11,584..11,729] → 11,495 ops/sec [11,284..11,662] ~ overlap (-1.4%) 20,320 ops/sec [20,131..20,664] → 20,229 ops/sec [19,904..20,633] ~ overlap (-0.4%)
Iterator.from({next}).forEach — 50 elements 4,575 ops/sec [4,537..4,603] → 4,631 ops/sec [4,591..4,677] ~ overlap (+1.2%) 6,445 ops/sec [6,403..6,468] → 6,616 ops/sec [6,589..6,656] 🟢 +2.7%
Iterator.from({next}).reduce — 50 elements 4,655 ops/sec [4,637..4,748] → 4,715 ops/sec [4,703..4,734] ~ overlap (+1.3%) 6,342 ops/sec [6,149..6,419] → 6,549 ops/sec [6,508..6,570] 🟢 +3.3%
wrap array iterator 160,837 ops/sec [160,463..161,474] → 160,324 ops/sec [158,250..161,988] ~ overlap (-0.3%) 187,077 ops/sec [186,102..187,923] → 176,530 ops/sec [175,309..181,424] 🔴 -5.6%
wrap plain {next()} object 10,907 ops/sec [10,867..10,949] → 10,977 ops/sec [10,864..11,025] ~ overlap (+0.6%) 14,546 ops/sec [14,340..14,600] → 14,593 ops/sec [14,461..14,687] ~ overlap (+0.3%)
map + toArray (50 elements) 4,628 ops/sec [4,592..4,686] → 4,677 ops/sec [4,632..4,744] ~ overlap (+1.0%) 6,540 ops/sec [6,474..6,572] → 6,626 ops/sec [6,562..6,652] ~ overlap (+1.3%)
filter + toArray (50 elements) 4,541 ops/sec [4,524..4,555] → 4,632 ops/sec [4,603..4,651] 🟢 +2.0% 6,360 ops/sec [6,247..6,382] → 6,436 ops/sec [6,412..6,476] 🟢 +1.2%
take(10) + toArray (50 element source) 28,319 ops/sec [28,113..28,658] → 28,527 ops/sec [28,428..28,698] ~ overlap (+0.7%) 37,830 ops/sec [37,582..38,259] → 36,531 ops/sec [36,312..36,577] 🔴 -3.4%
drop(40) + toArray (50 element source) 6,766 ops/sec [6,744..6,838] → 6,830 ops/sec [6,793..6,854] ~ overlap (+1.0%) 9,357 ops/sec [9,341..9,498] → 9,388 ops/sec [9,275..9,439] ~ overlap (+0.3%)
chained map + filter + take (100 element source) 8,122 ops/sec [8,082..8,176] → 8,416 ops/sec [8,366..8,460] 🟢 +3.6% 11,475 ops/sec [11,244..11,618] → 11,590 ops/sec [11,520..11,646] ~ overlap (+1.0%)
some + every (50 elements) 2,643 ops/sec [2,613..2,683] → 2,627 ops/sec [1,949..2,707] ~ overlap (-0.6%) 3,815 ops/sec [3,769..3,855] → 3,906 ops/sec [3,892..3,917] 🟢 +2.4%
find (50 elements) 5,760 ops/sec [5,722..5,828] → 5,568 ops/sec [4,691..6,122] ~ overlap (-3.3%) 8,212 ops/sec [8,088..8,254] → 8,351 ops/sec [8,311..8,382] 🟢 +1.7%
concat 2 arrays (10 + 10 elements) 160,643 ops/sec [159,408..161,007] → 157,323 ops/sec [144,874..160,482] ~ overlap (-2.1%) 170,798 ops/sec [169,880..171,354] → 166,182 ops/sec [164,782..168,241] 🔴 -2.7%
concat 5 arrays (10 elements each) 97,795 ops/sec [97,455..98,288] → 99,308 ops/sec [95,549..100,360] ~ overlap (+1.5%) 103,845 ops/sec [102,681..105,472] → 104,569 ops/sec [103,679..106,525] ~ overlap (+0.7%)
concat 2 arrays (20 + 20 elements) 145,223 ops/sec [144,595..146,138] → 134,021 ops/sec [100,000..144,340] 🔴 -7.7% 149,267 ops/sec [147,762..150,120] → 146,168 ops/sec [145,100..147,092] 🔴 -2.1%
concat + filter + toArray (20 + 20 elements) 15,413 ops/sec [15,378..15,740] → 13,902 ops/sec [10,362..16,342] ~ overlap (-9.8%) 20,600 ops/sec [20,452..20,623] → 23,352 ops/sec [23,185..23,463] 🟢 +13.4%
concat + map + take (20 + 20 elements, take 10) 46,236 ops/sec [46,035..46,484] → 46,493 ops/sec [46,168..46,839] ~ overlap (+0.6%) 60,394 ops/sec [59,732..61,593] → 61,360 ops/sec [60,421..61,564] ~ overlap (+1.6%)
concat Sets (15 + 15 elements) 145,580 ops/sec [144,873..146,887] → 146,091 ops/sec [144,345..148,547] ~ overlap (+0.4%) 144,700 ops/sec [144,119..144,878] → 143,397 ops/sec [142,845..145,497] ~ overlap (-0.9%)
concat strings (13 + 13 characters) 109,137 ops/sec [108,316..109,678] → 103,825 ops/sec [102,297..105,488] 🔴 -4.9% 106,531 ops/sec [106,197..106,881] → 98,011 ops/sec [97,047..99,254] 🔴 -8.0%
zip 2 arrays (10 + 10 elements) 56,333 ops/sec [55,878..57,446] → 55,209 ops/sec [53,668..57,449] ~ overlap (-2.0%) 57,027 ops/sec [56,844..57,153] → 52,601 ops/sec [51,785..53,412] 🔴 -7.8%
zip 3 arrays (10 elements each) 52,842 ops/sec [52,273..53,281] → 52,471 ops/sec [51,613..53,632] ~ overlap (-0.7%) 53,069 ops/sec [52,711..53,433] → 47,707 ops/sec [47,386..48,267] 🔴 -10.1%
zip 2 arrays (20 + 20 elements) 37,664 ops/sec [37,377..37,985] → 37,553 ops/sec [36,878..38,511] ~ overlap (-0.3%) 37,664 ops/sec [37,350..38,018] → 34,114 ops/sec [33,623..34,302] 🔴 -9.4%
zip 2 arrays (50 + 50 elements) 19,255 ops/sec [19,173..19,388] → 18,909 ops/sec [18,744..19,135] 🔴 -1.8% 18,874 ops/sec [18,718..19,034] → 18,081 ops/sec [18,032..18,244] 🔴 -4.2%
zip shortest mode (20 + 10 elements) 56,512 ops/sec [56,323..56,570] → 55,619 ops/sec [42,018..56,938] ~ overlap (-1.6%) 56,455 ops/sec [55,580..56,925] → 55,383 ops/sec [55,212..56,103] ~ overlap (-1.9%)
zip longest mode (10 + 20 elements) 32,723 ops/sec [32,176..33,281] → 33,479 ops/sec [33,239..33,953] ~ overlap (+2.3%) 33,437 ops/sec [32,959..33,624] → 30,236 ops/sec [30,045..30,400] 🔴 -9.6%
zip strict mode (20 + 20 elements) 36,076 ops/sec [35,700..36,234] → 35,620 ops/sec [34,861..36,275] ~ overlap (-1.3%) 36,122 ops/sec [35,879..36,245] → 33,361 ops/sec [32,866..33,888] 🔴 -7.6%
zip + map + toArray (20 + 20 elements) 17,064 ops/sec [16,799..17,258] → 17,026 ops/sec [16,851..17,107] ~ overlap (-0.2%) 11,776 ops/sec [11,712..11,825] → 11,227 ops/sec [10,966..11,255] 🔴 -4.7%
zip + filter + toArray (20 + 20 elements) 16,202 ops/sec [16,147..16,323] → 16,136 ops/sec [15,899..16,168] ~ overlap (-0.4%) 11,594 ops/sec [11,560..11,655] → 11,285 ops/sec [11,201..11,431] 🔴 -2.7%
zip Sets (15 + 15 elements) 43,965 ops/sec [43,621..44,524] → 43,658 ops/sec [31,966..44,809] ~ overlap (-0.7%) 44,764 ops/sec [44,448..44,838] → 42,329 ops/sec [42,155..43,037] 🔴 -5.4%
zipKeyed 2 keys (10 elements each) 54,844 ops/sec [54,451..55,060] → 53,343 ops/sec [53,013..54,203] 🔴 -2.7% 55,340 ops/sec [55,205..55,381] → 52,709 ops/sec [51,912..53,241] 🔴 -4.8%
zipKeyed 3 keys (20 elements each) 27,928 ops/sec [27,261..28,132] → 26,970 ops/sec [26,772..27,076] 🔴 -3.4% 29,322 ops/sec [29,022..30,415] → 27,306 ops/sec [26,877..27,857] 🔴 -6.9%
zipKeyed longest mode (10 + 20 elements) 30,972 ops/sec [30,113..31,428] → 30,653 ops/sec [30,099..30,920] ~ overlap (-1.0%) 31,750 ops/sec [31,481..31,867] → 30,006 ops/sec [29,711..30,132] 🔴 -5.5%
zipKeyed strict mode (20 + 20 elements) 32,954 ops/sec [32,816..33,378] → 32,804 ops/sec [31,715..33,150] ~ overlap (-0.5%) 34,159 ops/sec [33,862..34,342] → 30,999 ops/sec [30,600..31,358] 🔴 -9.3%
zipKeyed + filter + map (20 elements) 12,189 ops/sec [12,049..12,326] → 12,530 ops/sec [12,251..12,659] ~ overlap (+2.8%) 15,052 ops/sec [14,306..15,224] → 14,779 ops/sec [14,492..14,849] ~ overlap (-1.8%)
array.values().map().filter().toArray() 7,771 ops/sec [7,604..7,848] → 8,115 ops/sec [7,921..8,181] 🟢 +4.4% 10,728 ops/sec [10,640..10,746] → 11,170 ops/sec [11,135..11,209] 🟢 +4.1%
array.values().take(5).toArray() 213,243 ops/sec [212,402..213,511] → 212,816 ops/sec [182,754..215,472] ~ overlap (-0.2%) 240,009 ops/sec [239,304..242,985] → 234,084 ops/sec [231,345..235,067] 🔴 -2.5%
array.values().drop(45).toArray() 201,524 ops/sec [199,323..202,409] → 196,137 ops/sec [194,904..196,492] 🔴 -2.7% 222,978 ops/sec [218,005..224,890] → 220,774 ops/sec [219,122..228,010] ~ overlap (-1.0%)
map.entries() chained helpers 9,856 ops/sec [9,814..9,870] → 10,070 ops/sec [10,043..10,129] 🟢 +2.2% 6,406 ops/sec [6,322..6,463] → 5,892 ops/sec [5,779..5,957] 🔴 -8.0%
set.values() chained helpers 16,260 ops/sec [16,159..16,327] → 16,948 ops/sec [16,745..17,304] 🟢 +4.2% 21,508 ops/sec [21,360..21,533] → 24,362 ops/sec [24,161..24,717] 🟢 +13.3%
string iterator map + toArray 13,188 ops/sec [13,089..13,240] → 13,635 ops/sec [13,563..13,798] 🟢 +3.4% 15,628 ops/sec [15,366..15,727] → 14,385 ops/sec [14,192..14,460] 🔴 -8.0%
json.js — Interp: 🟢 3, 🔴 2, 15 unch. · avg -0.8% · Bytecode: 🟢 11, 🔴 2, 7 unch. · avg +1.8%
Benchmark Interpreted Δ Bytecode Δ
parse simple object 144,848 ops/sec [144,194..146,603] → 149,269 ops/sec [146,935..149,773] 🟢 +3.1% 152,544 ops/sec [151,819..152,929] → 153,632 ops/sec [152,634..153,882] ~ overlap (+0.7%)
parse nested object 94,046 ops/sec [93,702..94,493] → 89,715 ops/sec [83,485..94,285] ~ overlap (-4.6%) 98,309 ops/sec [97,251..98,710] → 97,566 ops/sec [96,986..97,745] ~ overlap (-0.8%)
parse array of objects 55,826 ops/sec [55,456..55,965] → 54,352 ops/sec [53,865..55,730] ~ overlap (-2.6%) 56,501 ops/sec [55,375..56,767] → 55,770 ops/sec [55,246..55,917] ~ overlap (-1.3%)
parse large flat object 60,702 ops/sec [60,103..61,116] → 62,816 ops/sec [62,518..63,025] 🟢 +3.5% 65,058 ops/sec [64,731..65,359] → 64,236 ops/sec [63,825..64,624] 🔴 -1.3%
parse mixed types 68,539 ops/sec [67,819..68,814] → 68,009 ops/sec [67,819..68,147] ~ overlap (-0.8%) 72,416 ops/sec [71,653..72,600] → 73,138 ops/sec [72,743..73,314] 🟢 +1.0%
stringify simple object 154,515 ops/sec [153,363..155,611] → 151,889 ops/sec [148,838..154,857] ~ overlap (-1.7%) 155,791 ops/sec [155,396..156,230] → 161,772 ops/sec [160,778..163,442] 🟢 +3.8%
stringify nested object 87,644 ops/sec [87,025..87,912] → 77,891 ops/sec [74,447..85,537] 🔴 -11.1% 86,710 ops/sec [86,264..87,271] → 88,442 ops/sec [87,822..88,806] 🟢 +2.0%
stringify array of objects 37,143 ops/sec [37,035..37,226] → 37,377 ops/sec [35,762..37,708] ~ overlap (+0.6%) 37,453 ops/sec [37,200..37,596] → 41,633 ops/sec [41,499..41,918] 🟢 +11.2%
stringify mixed types 65,385 ops/sec [65,048..65,490] → 64,919 ops/sec [64,397..65,398] ~ overlap (-0.7%) 65,177 ops/sec [64,541..65,366] → 65,742 ops/sec [65,359..66,123] ~ overlap (+0.9%)
reviver doubles numbers 33,333 ops/sec [33,147..33,422] → 33,278 ops/sec [33,160..33,407] ~ overlap (-0.2%) 36,510 ops/sec [36,259..36,718] → 36,242 ops/sec [36,055..36,518] ~ overlap (-0.7%)
reviver filters properties 30,060 ops/sec [29,741..30,214] → 30,755 ops/sec [30,419..30,838] 🟢 +2.3% 31,688 ops/sec [31,146..31,862] → 32,763 ops/sec [32,592..33,357] 🟢 +3.4%
reviver on nested object 37,362 ops/sec [37,307..37,431] → 37,639 ops/sec [36,507..37,715] ~ overlap (+0.7%) 40,159 ops/sec [40,130..40,491] → 40,805 ops/sec [40,240..40,856] ~ overlap (+1.6%)
reviver on array 20,641 ops/sec [20,406..20,907] → 20,554 ops/sec [20,238..20,608] ~ overlap (-0.4%) 23,131 ops/sec [22,840..23,501] → 22,724 ops/sec [22,638..22,816] 🔴 -1.8%
replacer function doubles numbers 40,470 ops/sec [39,748..40,762] → 39,805 ops/sec [39,073..40,108] ~ overlap (-1.6%) 45,624 ops/sec [45,440..45,999] → 45,555 ops/sec [44,989..48,316] ~ overlap (-0.2%)
replacer function excludes properties 54,472 ops/sec [54,238..55,014] → 53,387 ops/sec [51,844..53,679] 🔴 -2.0% 55,975 ops/sec [55,707..56,016] → 56,973 ops/sec [56,520..57,419] 🟢 +1.8%
array replacer (allowlist) 93,537 ops/sec [92,508..94,826] → 92,922 ops/sec [92,262..94,048] ~ overlap (-0.7%) 95,064 ops/sec [94,492..95,155] → 97,773 ops/sec [97,029..98,246] 🟢 +2.8%
stringify with 2-space indent 74,508 ops/sec [74,276..74,867] → 74,266 ops/sec [73,745..74,612] ~ overlap (-0.3%) 77,402 ops/sec [76,963..77,558] → 79,396 ops/sec [79,273..79,957] 🟢 +2.6%
stringify with tab indent 74,316 ops/sec [73,984..74,811] → 74,032 ops/sec [73,578..74,661] ~ overlap (-0.4%) 77,357 ops/sec [75,665..77,570] → 79,748 ops/sec [79,176..80,048] 🟢 +3.1%
parse then stringify 44,084 ops/sec [43,361..44,514] → 44,130 ops/sec [42,863..45,362] ~ overlap (+0.1%) 47,058 ops/sec [44,879..47,503] → 48,919 ops/sec [48,245..49,200] 🟢 +4.0%
stringify then parse 25,944 ops/sec [25,810..26,186] → 25,999 ops/sec [23,441..26,194] ~ overlap (+0.2%) 27,870 ops/sec [27,589..27,981] → 28,587 ops/sec [27,992..28,711] 🟢 +2.6%
jsx.jsx — Interp: 🟢 4, 🔴 5, 12 unch. · avg -0.6% · Bytecode: 🟢 1, 🔴 11, 9 unch. · avg -2.1%
Benchmark Interpreted Δ Bytecode Δ
simple element 213,575 ops/sec [212,199..215,231] → 217,408 ops/sec [215,293..220,157] 🟢 +1.8% 319,800 ops/sec [318,008..321,220] → 321,411 ops/sec [320,224..324,610] ~ overlap (+0.5%)
self-closing element 223,160 ops/sec [218,761..224,059] → 224,097 ops/sec [223,802..225,122] ~ overlap (+0.4%) 363,453 ops/sec [360,856..366,794] → 346,407 ops/sec [343,573..348,813] 🔴 -4.7%
element with string attribute 179,906 ops/sec [178,075..180,290] → 180,338 ops/sec [179,534..182,910] ~ overlap (+0.2%) 252,750 ops/sec [251,021..253,194] → 253,752 ops/sec [251,047..257,098] ~ overlap (+0.4%)
element with multiple attributes 157,739 ops/sec [156,410..158,315] → 159,158 ops/sec [153,656..160,013] ~ overlap (+0.9%) 197,176 ops/sec [195,086..198,338] → 185,380 ops/sec [184,753..185,759] 🔴 -6.0%
element with expression attribute 168,829 ops/sec [168,159..170,053] → 167,558 ops/sec [165,341..168,762] ~ overlap (-0.8%) 256,865 ops/sec [256,448..257,868] → 256,061 ops/sec [254,466..260,353] ~ overlap (-0.3%)
text child 213,184 ops/sec [211,823..215,620] → 212,772 ops/sec [208,551..214,869] ~ overlap (-0.2%) 323,268 ops/sec [322,181..325,770] → 312,324 ops/sec [311,729..312,950] 🔴 -3.4%
expression child 210,489 ops/sec [209,891..210,952] → 208,463 ops/sec [205,162..214,990] ~ overlap (-1.0%) 319,908 ops/sec [318,137..321,213] → 322,877 ops/sec [319,683..326,227] ~ overlap (+0.9%)
mixed text and expression 194,838 ops/sec [194,338..195,451] → 194,242 ops/sec [194,144..194,875] ~ overlap (-0.3%) 280,476 ops/sec [279,272..281,271] → 264,443 ops/sec [262,648..266,240] 🔴 -5.7%
nested elements (3 levels) 80,336 ops/sec [79,997..80,730] → 81,489 ops/sec [80,913..81,856] 🟢 +1.4% 118,852 ops/sec [118,036..119,308] → 120,753 ops/sec [115,988..121,717] ~ overlap (+1.6%)
sibling children 59,466 ops/sec [59,270..59,581] → 60,325 ops/sec [60,227..60,528] 🟢 +1.4% 86,599 ops/sec [85,983..87,100] → 83,579 ops/sec [82,849..84,255] 🔴 -3.5%
component element 151,393 ops/sec [150,606..152,305] → 152,651 ops/sec [152,560..152,792] 🟢 +0.8% 227,255 ops/sec [225,366..229,034] → 223,862 ops/sec [223,482..225,501] ~ overlap (-1.5%)
component with children 93,703 ops/sec [92,955..94,424] → 92,067 ops/sec [91,428..92,802] 🔴 -1.7% 134,682 ops/sec [133,715..135,752] → 129,222 ops/sec [128,050..131,665] 🔴 -4.1%
dotted component 128,514 ops/sec [127,597..128,932] → 124,820 ops/sec [123,624..126,675] 🔴 -2.9% 172,202 ops/sec [171,262..173,218] → 169,924 ops/sec [168,918..171,199] 🔴 -1.3%
empty fragment 226,343 ops/sec [222,597..227,817] → 218,544 ops/sec [206,235..220,000] 🔴 -3.4% 395,131 ops/sec [393,020..396,842] → 377,516 ops/sec [371,157..381,067] 🔴 -4.5%
fragment with children 59,239 ops/sec [58,790..59,596] → 59,554 ops/sec [58,766..59,881] ~ overlap (+0.5%) 87,831 ops/sec [87,291..88,361] → 87,684 ops/sec [86,450..87,990] ~ overlap (-0.2%)
spread attributes 111,249 ops/sec [110,624..112,643] → 106,992 ops/sec [103,314..108,111] 🔴 -3.8% 129,911 ops/sec [129,479..130,413] → 131,811 ops/sec [131,420..132,529] 🟢 +1.5%
spread with overrides 96,557 ops/sec [95,705..97,163] → 96,224 ops/sec [95,251..96,511] ~ overlap (-0.3%) 112,599 ops/sec [111,959..114,007] → 111,765 ops/sec [110,586..113,960] ~ overlap (-0.7%)
shorthand props 161,052 ops/sec [158,760..162,653] → 157,810 ops/sec [156,669..159,412] ~ overlap (-2.0%) 238,123 ops/sec [236,186..238,997] → 223,671 ops/sec [221,619..226,433] 🔴 -6.1%
nav bar structure 28,141 ops/sec [27,926..28,390] → 27,368 ops/sec [26,894..27,770] 🔴 -2.7% 39,223 ops/sec [38,332..40,032] → 38,990 ops/sec [38,895..39,844] ~ overlap (-0.6%)
card component tree 32,665 ops/sec [32,083..33,012] → 32,188 ops/sec [32,016..32,325] ~ overlap (-1.5%) 44,290 ops/sec [44,223..44,473] → 42,694 ops/sec [41,861..42,957] 🔴 -3.6%
10 list items via Array.from 14,672 ops/sec [14,499..14,775] → 14,677 ops/sec [14,569..14,778] ~ overlap (+0.0%) 19,349 ops/sec [19,259..19,436] → 18,740 ops/sec [18,661..18,877] 🔴 -3.1%
modules.js — Interp: 🟢 3, 🔴 1, 5 unch. · avg +0.4% · Bytecode: 🟢 9 · avg +8.1%
Benchmark Interpreted Δ Bytecode Δ
call imported function 461,998 ops/sec [458,912..466,639] → 453,686 ops/sec [451,445..454,470] 🔴 -1.8% 679,786 ops/sec [679,092..685,936] → 708,550 ops/sec [699,682..714,433] 🟢 +4.2%
call two imported functions 254,290 ops/sec [253,372..257,323] → 253,065 ops/sec [250,604..254,596] ~ overlap (-0.5%) 367,970 ops/sec [366,570..370,515] → 384,368 ops/sec [380,627..388,556] 🟢 +4.5%
read imported constant 1,599,925 ops/sec [1,594,032..1,603,310] → 1,625,209 ops/sec [1,609,499..1,627,467] 🟢 +1.6% 5,610,988 ops/sec [5,606,384..5,614,809] → 6,098,000 ops/sec [6,092,943..6,103,737] 🟢 +8.7%
read imported string 1,600,595 ops/sec [1,578,836..1,616,381] → 1,631,907 ops/sec [1,627,085..1,637,018] 🟢 +2.0% 5,572,959 ops/sec [5,564,356..5,626,873] → 6,101,781 ops/sec [6,084,390..6,108,921] 🟢 +9.5%
read JSON string property 1,632,760 ops/sec [1,616,774..1,635,983] → 1,643,103 ops/sec [1,634,211..1,654,209] ~ overlap (+0.6%) 5,611,281 ops/sec [5,604,581..5,613,515] → 6,114,644 ops/sec [6,100,855..6,123,537] 🟢 +9.0%
read JSON number property 1,612,243 ops/sec [1,601,378..1,621,699] → 1,602,687 ops/sec [1,597,780..1,611,471] ~ overlap (-0.6%) 5,615,055 ops/sec [5,605,548..5,619,579] → 6,109,248 ops/sec [6,089,775..6,122,234] 🟢 +8.8%
read JSON boolean property 1,623,676 ops/sec [1,620,499..1,626,049] → 1,637,171 ops/sec [1,599,153..1,644,813] ~ overlap (+0.8%) 5,617,444 ops/sec [5,608,926..5,626,527] → 6,123,172 ops/sec [6,112,854..6,136,685] 🟢 +9.0%
read JSON array property 1,624,795 ops/sec [1,611,955..1,634,086] → 1,626,664 ops/sec [1,622,417..1,661,952] ~ overlap (+0.1%) 5,618,158 ops/sec [5,610,459..5,623,229] → 6,113,418 ops/sec [6,095,706..6,126,027] 🟢 +8.8%
read multiple JSON properties 902,627 ops/sec [896,091..905,816] → 918,751 ops/sec [914,299..929,933] 🟢 +1.8% 4,730,310 ops/sec [4,631,900..4,734,696] → 5,233,492 ops/sec [5,226,191..5,239,885] 🟢 +10.6%
numbers.js — Interp: 🟢 4, 🔴 2, 5 unch. · avg +0.5% · Bytecode: 🟢 6, 🔴 1, 4 unch. · avg +3.8%
Benchmark Interpreted Δ Bytecode Δ
integer arithmetic 519,364 ops/sec [517,931..519,985] → 509,991 ops/sec [436,845..517,071] 🔴 -1.8% 1,598,357 ops/sec [1,573,357..1,606,863] → 1,594,247 ops/sec [1,479,969..1,642,786] ~ overlap (-0.3%)
floating point arithmetic 595,324 ops/sec [592,591..601,091] → 576,954 ops/sec [570,511..579,228] 🔴 -3.1% 963,484 ops/sec [957,870..967,594] → 893,494 ops/sec [880,196..916,520] 🔴 -7.3%
number coercion 172,525 ops/sec [172,051..173,261] → 177,007 ops/sec [175,949..177,677] 🟢 +2.6% 206,651 ops/sec [205,775..207,383] → 225,054 ops/sec [224,637..226,772] 🟢 +8.9%
toFixed 100,555 ops/sec [99,700..101,547] → 102,287 ops/sec [101,815..102,760] 🟢 +1.7% 115,648 ops/sec [115,133..116,348] → 115,453 ops/sec [114,997..115,988] ~ overlap (-0.2%)
toString 149,578 ops/sec [146,954..151,033] → 151,628 ops/sec [151,127..151,692] 🟢 +1.4% 186,060 ops/sec [184,754..186,900] → 185,832 ops/sec [184,288..188,440] ~ overlap (-0.1%)
valueOf 221,944 ops/sec [221,671..223,023] → 220,641 ops/sec [219,205..222,761] ~ overlap (-0.6%) 264,603 ops/sec [263,169..264,839] → 277,127 ops/sec [276,237..277,788] 🟢 +4.7%
toPrecision 141,113 ops/sec [138,058..142,221] → 140,519 ops/sec [139,526..142,498] ~ overlap (-0.4%) 161,501 ops/sec [160,849..162,797] → 160,167 ops/sec [159,383..161,501] ~ overlap (-0.8%)
Number.isNaN 300,260 ops/sec [298,725..301,227] → 302,542 ops/sec [299,448..302,907] ~ overlap (+0.8%) 295,398 ops/sec [293,839..296,347] → 335,353 ops/sec [330,661..337,106] 🟢 +13.5%
Number.isFinite 294,345 ops/sec [293,233..295,730] → 303,721 ops/sec [301,239..306,112] 🟢 +3.2% 284,444 ops/sec [281,567..285,510] → 312,595 ops/sec [308,962..315,689] 🟢 +9.9%
Number.isInteger 302,985 ops/sec [301,795..305,880] → 305,760 ops/sec [304,662..306,833] ~ overlap (+0.9%) 307,004 ops/sec [305,061..309,187] → 336,681 ops/sec [333,948..338,147] 🟢 +9.7%
Number.parseInt and parseFloat 239,519 ops/sec [233,360..240,802] → 241,925 ops/sec [240,005..244,389] ~ overlap (+1.0%) 237,638 ops/sec [237,330..238,249] → 246,486 ops/sec [245,906..247,663] 🟢 +3.7%
objects.js — Interp: 🟢 1, 🔴 4, 2 unch. · avg -2.5% · Bytecode: 🟢 3, 🔴 1, 3 unch. · avg +1.4%
Benchmark Interpreted Δ Bytecode Δ
create simple object 492,614 ops/sec [492,022..493,229] → 477,161 ops/sec [471,166..481,873] 🔴 -3.1% 583,307 ops/sec [576,626..586,632] → 569,401 ops/sec [556,526..581,805] ~ overlap (-2.4%)
create nested object 244,200 ops/sec [241,678..246,252] → 241,826 ops/sec [237,430..243,861] ~ overlap (-1.0%) 243,921 ops/sec [243,281..244,722] → 233,879 ops/sec [232,310..236,726] 🔴 -4.1%
create 50 objects via Array.from 9,265 ops/sec [9,199..9,314] → 9,496 ops/sec [9,455..9,531] 🟢 +2.5% 9,617 ops/sec [9,557..9,685] → 9,924 ops/sec [9,881..9,941] 🟢 +3.2%
property read 551,381 ops/sec [545,951..556,308] → 523,068 ops/sec [468,934..526,912] 🔴 -5.1% 746,846 ops/sec [739,939..753,949] → 796,944 ops/sec [793,953..798,907] 🟢 +6.7%
Object.keys 270,629 ops/sec [268,169..273,542] → 265,480 ops/sec [263,662..266,977] 🔴 -1.9% 305,658 ops/sec [300,614..307,292] → 313,942 ops/sec [311,653..315,408] 🟢 +2.7%
Object.entries 102,634 ops/sec [102,184..103,266] → 94,640 ops/sec [93,412..95,235] 🔴 -7.8% 109,090 ops/sec [108,809..109,941] → 110,013 ops/sec [108,922..111,422] ~ overlap (+0.8%)
spread operator 182,824 ops/sec [181,762..183,935] → 180,941 ops/sec [179,890..183,071] ~ overlap (-1.0%) 207,534 ops/sec [206,136..209,165] → 212,955 ops/sec [208,628..213,891] ~ overlap (+2.6%)
promises.js — Interp: 🟢 1, 🔴 1, 10 unch. · avg +0.3% · Bytecode: 🟢 10, 2 unch. · avg +5.0%
Benchmark Interpreted Δ Bytecode Δ
Promise.resolve(value) 516,915 ops/sec [509,608..520,673] → 511,572 ops/sec [507,691..512,803] ~ overlap (-1.0%) 550,442 ops/sec [548,263..553,828] → 586,120 ops/sec [585,123..592,432] 🟢 +6.5%
new Promise(resolve => resolve(value)) 188,389 ops/sec [187,074..188,822] → 185,252 ops/sec [179,673..186,743] 🔴 -1.7% 227,034 ops/sec [225,888..227,503] → 234,261 ops/sec [229,864..234,715] 🟢 +3.2%
Promise.reject(reason) 525,623 ops/sec [524,589..527,033] → 521,815 ops/sec [516,794..525,665] ~ overlap (-0.7%) 528,283 ops/sec [524,709..528,755] → 553,804 ops/sec [547,114..559,167] 🟢 +4.8%
resolve + then (1 handler) 173,174 ops/sec [171,323..174,432] → 178,941 ops/sec [178,601..180,443] 🟢 +3.3% 209,587 ops/sec [208,831..210,474] → 222,560 ops/sec [219,116..223,728] 🟢 +6.2%
resolve + then chain (3 deep) 69,649 ops/sec [69,048..70,382] → 71,472 ops/sec [69,967..72,539] ~ overlap (+2.6%) 85,480 ops/sec [84,620..86,144] → 88,014 ops/sec [86,459..89,690] 🟢 +3.0%
resolve + then chain (10 deep) 22,343 ops/sec [21,672..22,425] → 21,869 ops/sec [21,403..22,007] ~ overlap (-2.1%) 28,024 ops/sec [27,805..28,142] → 28,372 ops/sec [27,662..28,786] ~ overlap (+1.2%)
reject + catch + then 98,713 ops/sec [98,287..99,075] → 98,643 ops/sec [97,606..99,727] ~ overlap (-0.1%) 114,014 ops/sec [113,344..114,701] → 117,333 ops/sec [116,590..118,124] 🟢 +2.9%
resolve + finally + then 84,910 ops/sec [84,558..85,514] → 85,193 ops/sec [84,672..85,699] ~ overlap (+0.3%) 93,598 ops/sec [92,602..94,079] → 99,191 ops/sec [98,310..100,818] 🟢 +6.0%
Promise.all (5 resolved) 31,243 ops/sec [30,839..31,613] → 31,487 ops/sec [30,422..31,785] ~ overlap (+0.8%) 32,384 ops/sec [32,141..32,789] → 34,530 ops/sec [34,234..34,824] 🟢 +6.6%
Promise.race (5 resolved) 33,531 ops/sec [33,297..33,732] → 33,580 ops/sec [31,651..34,032] ~ overlap (+0.1%) 34,318 ops/sec [34,096..34,515] → 37,015 ops/sec [36,543..37,425] 🟢 +7.9%
Promise.allSettled (5 mixed) 26,289 ops/sec [26,262..26,305] → 26,542 ops/sec [20,805..26,947] ~ overlap (+1.0%) 27,187 ops/sec [27,005..27,387] → 28,409 ops/sec [27,907..28,638] 🟢 +4.5%
Promise.any (5 mixed) 31,332 ops/sec [31,275..31,391] → 31,555 ops/sec [30,146..32,004] ~ overlap (+0.7%) 31,772 ops/sec [31,584..31,996] → 33,929 ops/sec [30,652..34,536] ~ overlap (+6.8%)
regexp.js — Interp: 🟢 2, 🔴 3, 6 unch. · avg -0.7% · Bytecode: 🟢 3, 🔴 1, 7 unch. · avg +1.7%
Benchmark Interpreted Δ Bytecode Δ
regex literal creation 155,362 ops/sec [153,935..157,139] → 150,268 ops/sec [147,935..153,046] 🔴 -3.3% 146,088 ops/sec [141,424..147,033] → 140,290 ops/sec [139,162..141,383] 🔴 -4.0%
new RegExp(pattern, flags) 133,338 ops/sec [133,033..133,750] → 132,075 ops/sec [131,831..133,325] ~ overlap (-0.9%) 142,394 ops/sec [138,038..142,872] → 141,378 ops/sec [139,896..141,994] ~ overlap (-0.7%)
RegExp(existingRegex) returns the same regex 685,429 ops/sec [680,426..691,203] → 703,640 ops/sec [693,944..711,532] 🟢 +2.7% 1,004,612 ops/sec [999,620..1,005,351] → 1,140,441 ops/sec [1,138,403..1,143,445] 🟢 +13.5%
test() on a global regex 135,413 ops/sec [133,958..136,749] → 136,663 ops/sec [135,691..138,077] ~ overlap (+0.9%) 165,904 ops/sec [163,490..166,327] → 166,437 ops/sec [163,809..167,844] ~ overlap (+0.3%)
exec() with capture groups 117,527 ops/sec [116,403..118,681] → 117,049 ops/sec [115,649..118,729] ~ overlap (-0.4%) 137,000 ops/sec [132,348..137,382] → 139,989 ops/sec [138,508..142,437] 🟢 +2.2%
toString() 456,067 ops/sec [448,606..460,696] → 471,311 ops/sec [467,753..475,413] 🟢 +3.3% 647,941 ops/sec [641,441..649,696] → 685,907 ops/sec [684,661..686,724] 🟢 +5.9%
match() with global regex 39,635 ops/sec [39,379..39,822] → 38,922 ops/sec [38,342..39,566] ~ overlap (-1.8%) 40,421 ops/sec [40,006..40,542] → 40,801 ops/sec [40,493..41,190] ~ overlap (+0.9%)
matchAll() with capture groups 20,687 ops/sec [20,628..20,714] → 20,441 ops/sec [19,943..20,621] 🔴 -1.2% 25,860 ops/sec [25,617..26,149] → 25,590 ops/sec [25,506..25,808] ~ overlap (-1.0%)
replace() with global regex 38,242 ops/sec [37,780..38,532] → 37,590 ops/sec [36,861..37,783] ~ overlap (-1.7%) 38,641 ops/sec [37,793..39,017] → 39,302 ops/sec [38,471..39,587] ~ overlap (+1.7%)
search() with regex 78,790 ops/sec [77,878..79,318] → 77,963 ops/sec [75,461..79,149] ~ overlap (-1.0%) 78,233 ops/sec [76,264..78,692] → 77,557 ops/sec [76,782..77,729] ~ overlap (-0.9%)
split() with regex separator 39,573 ops/sec [39,235..39,633] → 37,974 ops/sec [31,079..38,523] 🔴 -4.0% 40,305 ops/sec [39,518..40,392] → 40,445 ops/sec [40,092..41,077] ~ overlap (+0.3%)
strings.js — Interp: 🟢 1, 🔴 3, 15 unch. · avg +0.0% · Bytecode: 🟢 10, 9 unch. · avg +3.1%
Benchmark Interpreted Δ Bytecode Δ
string concatenation 396,299 ops/sec [392,227..399,185] → 386,805 ops/sec [382,170..390,973] 🔴 -2.4% 294,392 ops/sec [281,120..297,424] → 278,629 ops/sec [273,229..281,200] ~ overlap (-5.4%)
template literal 777,394 ops/sec [771,200..783,429] → 769,436 ops/sec [755,458..774,557] ~ overlap (-1.0%) 521,567 ops/sec [510,538..523,353] → 509,562 ops/sec [499,973..513,684] ~ overlap (-2.3%)
string repeat 390,016 ops/sec [386,858..392,940] → 393,279 ops/sec [390,658..400,461] ~ overlap (+0.8%) 455,073 ops/sec [446,049..457,742] → 459,240 ops/sec [454,294..469,423] ~ overlap (+0.9%)
split and join 133,288 ops/sec [132,493..134,520] → 133,268 ops/sec [131,777..133,546] ~ overlap (-0.0%) 147,093 ops/sec [146,685..147,704] → 154,818 ops/sec [153,823..156,743] 🟢 +5.3%
indexOf and includes 159,169 ops/sec [157,951..161,675] → 158,993 ops/sec [153,290..160,579] ~ overlap (-0.1%) 176,155 ops/sec [172,823..177,589] → 185,425 ops/sec [182,526..186,377] 🟢 +5.3%
toUpperCase and toLowerCase 252,700 ops/sec [251,610..254,634] → 247,894 ops/sec [246,311..250,171] 🔴 -1.9% 325,768 ops/sec [323,444..327,484] → 341,861 ops/sec [337,933..343,745] 🟢 +4.9%
slice and substring 147,674 ops/sec [147,451..148,417] → 149,415 ops/sec [147,937..150,289] ~ overlap (+1.2%) 188,635 ops/sec [187,266..189,355] → 203,506 ops/sec [203,110..204,668] 🟢 +7.9%
trim operations 187,332 ops/sec [186,778..188,408] → 187,523 ops/sec [185,146..188,274] ~ overlap (+0.1%) 235,762 ops/sec [233,795..237,659] → 255,268 ops/sec [252,550..256,644] 🟢 +8.3%
replace and replaceAll 197,649 ops/sec [197,063..198,362] → 198,330 ops/sec [162,531..202,686] ~ overlap (+0.3%) 214,246 ops/sec [205,559..215,740] → 221,715 ops/sec [219,995..225,764] 🟢 +3.5%
startsWith and endsWith 130,568 ops/sec [130,365..131,661] → 130,819 ops/sec [129,343..131,371] ~ overlap (+0.2%) 145,618 ops/sec [143,993..146,327] → 157,501 ops/sec [155,767..158,726] 🟢 +8.2%
padStart and padEnd 188,438 ops/sec [187,839..189,064] → 186,927 ops/sec [183,529..192,155] ~ overlap (-0.8%) 222,340 ops/sec [218,982..224,461] → 225,762 ops/sec [223,337..227,525] ~ overlap (+1.5%)
identity tag, no substitutions 458,018 ops/sec [456,928..461,557] → 466,121 ops/sec [461,432..473,673] ~ overlap (+1.8%) 1,431,422 ops/sec [1,426,891..1,434,866] → 1,571,516 ops/sec [1,566,316..1,579,499] 🟢 +9.8%
tag with 1 substitution 86,152 ops/sec [85,782..86,521] → 86,156 ops/sec [85,009..87,059] ~ overlap (+0.0%) 114,302 ops/sec [113,551..115,393] → 111,386 ops/sec [110,465..113,746] ~ overlap (-2.6%)
tag with 3 substitutions 47,544 ops/sec [47,366..47,626] → 46,598 ops/sec [46,071..47,126] 🔴 -2.0% 66,263 ops/sec [62,996..66,650] → 65,092 ops/sec [64,624..65,538] ~ overlap (-1.8%)
tag with 6 substitutions 28,612 ops/sec [28,390..28,969] → 28,283 ops/sec [28,111..28,462] ~ overlap (-1.1%) 38,717 ops/sec [38,601..38,740] → 39,201 ops/sec [38,254..39,914] ~ overlap (+1.2%)
String.raw, no substitutions 581,750 ops/sec [575,463..585,614] → 599,001 ops/sec [587,035..607,439] 🟢 +3.0% 569,435 ops/sec [553,914..575,118] → 601,052 ops/sec [600,800..603,375] 🟢 +5.6%
String.raw, 2 substitutions 407,055 ops/sec [402,883..410,762] → 421,931 ops/sec [397,365..425,407] ~ overlap (+3.7%) 411,432 ops/sec [399,971..418,199] → 404,033 ops/sec [400,083..414,676] ~ overlap (-1.8%)
tag accessing .raw array 167,323 ops/sec [165,642..168,342] → 168,611 ops/sec [166,747..171,918] ~ overlap (+0.8%) 205,203 ops/sec [202,808..205,991] → 215,847 ops/sec [205,470..226,614] ~ overlap (+5.2%)
method as tag (this binding) 64,271 ops/sec [63,336..64,491] → 63,069 ops/sec [60,289..63,842] ~ overlap (-1.9%) 88,571 ops/sec [87,483..89,083] → 92,823 ops/sec [89,266..95,972] 🟢 +4.8%
typed-arrays.js — Interp: 🟢 6, 🔴 4, 12 unch. · avg +1.3% · Bytecode: 🟢 7, 🔴 11, 4 unch. · avg -0.5%
Benchmark Interpreted Δ Bytecode Δ
new Int32Array(0) 329,824 ops/sec [328,417..332,447] → 341,294 ops/sec [336,792..344,630] 🟢 +3.5% 381,363 ops/sec [378,134..382,999] → 397,120 ops/sec [395,910..397,907] 🟢 +4.1%
new Int32Array(100) 296,341 ops/sec [294,720..298,608] → 311,999 ops/sec [309,926..313,248] 🟢 +5.3% 331,495 ops/sec [329,629..332,273] → 360,424 ops/sec [357,606..367,682] 🟢 +8.7%
new Int32Array(1000) 187,637 ops/sec [186,484..188,900] → 187,874 ops/sec [186,362..189,657] ~ overlap (+0.1%) 194,649 ops/sec [191,922..197,737] → 181,254 ops/sec [179,635..184,501] 🔴 -6.9%
new Float64Array(100) 284,495 ops/sec [280,895..286,238] → 292,256 ops/sec [288,288..293,433] 🟢 +2.7% 302,539 ops/sec [301,164..304,816] → 315,693 ops/sec [313,076..322,149] 🟢 +4.3%
Int32Array.from([...]) 164,395 ops/sec [162,738..164,890] → 182,624 ops/sec [181,119..183,928] 🟢 +11.1% 183,849 ops/sec [183,044..186,114] → 184,899 ops/sec [184,389..186,141] ~ overlap (+0.6%)
Int32Array.of(1, 2, 3, 4, 5) 299,052 ops/sec [296,849..302,283] → 304,671 ops/sec [301,779..307,929] ~ overlap (+1.9%) 342,726 ops/sec [335,552..345,174] → 349,236 ops/sec [345,694..349,849] 🟢 +1.9%
sequential write 100 elements 3,520 ops/sec [3,481..3,572] → 3,573 ops/sec [3,428..3,592] ~ overlap (+1.5%) 16,646 ops/sec [16,388..16,733] → 16,756 ops/sec [16,718..16,782] ~ overlap (+0.7%)
sequential read 100 elements 3,631 ops/sec [3,599..3,661] → 3,602 ops/sec [3,561..3,633] ~ overlap (-0.8%) 16,991 ops/sec [16,905..17,224] → 16,090 ops/sec [15,731..16,120] 🔴 -5.3%
Float64Array write 100 elements 3,343 ops/sec [3,290..3,354] → 3,324 ops/sec [3,288..3,365] ~ overlap (-0.6%) 10,683 ops/sec [10,565..10,700] → 9,986 ops/sec [9,925..10,039] 🔴 -6.5%
fill(42) 49,439 ops/sec [49,380..49,573] → 48,306 ops/sec [48,034..48,459] 🔴 -2.3% 50,400 ops/sec [50,358..50,414] → 49,087 ops/sec [48,906..49,126] 🔴 -2.6%
slice() 199,467 ops/sec [197,032..200,696] → 199,916 ops/sec [197,327..203,250] ~ overlap (+0.2%) 223,701 ops/sec [222,431..224,214] → 210,470 ops/sec [208,458..211,532] 🔴 -5.9%
map(x => x * 2) 7,699 ops/sec [7,614..7,765] → 7,738 ops/sec [7,632..7,804] ~ overlap (+0.5%) 10,311 ops/sec [10,268..10,343] → 9,875 ops/sec [9,652..10,039] 🔴 -4.2%
filter(x => x > 50) 7,870 ops/sec [7,762..7,955] → 7,828 ops/sec [7,413..8,057] ~ overlap (-0.5%) 10,894 ops/sec [10,791..10,933] → 11,320 ops/sec [11,273..11,391] 🟢 +3.9%
reduce (sum) 7,617 ops/sec [7,541..7,664] → 8,039 ops/sec [7,776..8,082] 🟢 +5.5% 9,752 ops/sec [9,519..9,802] → 9,734 ops/sec [9,635..9,880] ~ overlap (-0.2%)
sort() 170,370 ops/sec [170,017..170,871] → 166,223 ops/sec [162,957..167,408] 🔴 -2.4% 174,823 ops/sec [171,879..175,001] → 166,359 ops/sec [166,172..166,443] 🔴 -4.8%
indexOf() 413,630 ops/sec [410,354..419,068] → 408,542 ops/sec [405,803..409,231] 🔴 -1.2% 510,838 ops/sec [508,380..512,738] → 500,834 ops/sec [499,362..501,522] 🔴 -2.0%
reverse() 314,627 ops/sec [313,715..315,963] → 313,209 ops/sec [312,458..314,307] ~ overlap (-0.5%) 359,208 ops/sec [358,385..359,717] → 348,423 ops/sec [346,321..349,081] 🔴 -3.0%
create view over existing buffer 386,014 ops/sec [381,720..388,197] → 407,791 ops/sec [405,265..410,603] 🟢 +5.6% 461,444 ops/sec [459,319..465,148] → 504,011 ops/sec [500,900..510,113] 🟢 +9.2%
subarray() 408,934 ops/sec [403,319..412,005] → 415,874 ops/sec [410,919..418,489] ~ overlap (+1.7%) 537,277 ops/sec [524,885..542,466] → 533,208 ops/sec [529,284..537,187] ~ overlap (-0.8%)
set() from array 540,216 ops/sec [534,221..543,430] → 546,471 ops/sec [502,832..561,024] ~ overlap (+1.2%) 627,870 ops/sec [625,729..628,455] → 692,281 ops/sec [686,020..694,436] 🟢 +10.3%
for-of loop 5,026 ops/sec [4,955..5,049] → 4,972 ops/sec [4,948..5,031] ~ overlap (-1.1%) 30,290 ops/sec [30,091..30,344] → 28,958 ops/sec [28,711..29,089] 🔴 -4.4%
spread into array 17,636 ops/sec [17,323..17,756] → 17,079 ops/sec [16,743..17,154] 🔴 -3.2% 101,670 ops/sec [101,275..102,405] → 93,672 ops/sec [93,402..94,375] 🔴 -7.9%
uint8array-encoding.js — Interp: 🟢 3, 🔴 6, 9 unch. · avg -0.7% · Bytecode: 🟢 4, 🔴 5, 9 unch. · avg -1.3%
Benchmark Interpreted Δ Bytecode Δ
short (5 bytes) 769,112 ops/sec [762,808..775,005] → 733,076 ops/sec [717,866..737,116] 🔴 -4.7% 1,202,422 ops/sec [1,168,406..1,206,195] → 1,241,430 ops/sec [1,223,195..1,248,583] 🟢 +3.2%
medium (450 bytes) 295,001 ops/sec [292,979..297,353] → 287,123 ops/sec [279,183..288,602] 🔴 -2.7% 327,556 ops/sec [323,604..328,284] → 331,148 ops/sec [327,066..334,614] ~ overlap (+1.1%)
large (4096 bytes) 46,088 ops/sec [45,975..46,225] → 43,632 ops/sec [43,553..43,669] 🔴 -5.3% 45,652 ops/sec [45,213..47,913] → 46,613 ops/sec [46,157..50,162] ~ overlap (+2.1%)
base64url alphabet 200,512 ops/sec [199,284..201,506] → 197,960 ops/sec [196,098..201,077] ~ overlap (-1.3%) 217,938 ops/sec [213,986..219,192] → 221,815 ops/sec [218,740..223,098] ~ overlap (+1.8%)
omitPadding 363,943 ops/sec [361,199..365,534] → 361,876 ops/sec [353,833..367,046] ~ overlap (-0.6%) 451,005 ops/sec [442,004..456,175] → 462,721 ops/sec [375,847..474,486] ~ overlap (+2.6%)
short (8 chars) 336,996 ops/sec [335,553..341,742] → 338,589 ops/sec [335,999..340,797] ~ overlap (+0.5%) 365,077 ops/sec [363,247..365,371] → 374,139 ops/sec [371,701..378,634] 🟢 +2.5%
medium (600 chars) 142,308 ops/sec [141,895..142,810] → 139,886 ops/sec [124,243..141,849] 🔴 -1.7% 150,544 ops/sec [147,813..150,875] → 148,400 ops/sec [147,971..150,179] ~ overlap (-1.4%)
large (5464 chars) 25,820 ops/sec [25,808..25,823] → 25,626 ops/sec [25,346..25,694] 🔴 -0.8% 26,102 ops/sec [24,850..26,337] → 25,571 ops/sec [24,572..26,379] ~ overlap (-2.0%)
short (5 bytes) 807,959 ops/sec [799,270..818,068] → 801,720 ops/sec [798,523..806,844] ~ overlap (-0.8%) 1,183,580 ops/sec [1,165,152..1,189,111] → 1,269,154 ops/sec [1,263,265..1,277,921] 🟢 +7.2%
medium (450 bytes) 275,509 ops/sec [273,453..276,731] → 288,474 ops/sec [284,683..290,012] 🟢 +4.7% 303,704 ops/sec [300,888..305,401] → 301,780 ops/sec [300,835..302,290] ~ overlap (-0.6%)
large (4096 bytes) 42,684 ops/sec [42,446..42,800] → 43,559 ops/sec [43,440..43,755] 🟢 +2.1% 42,536 ops/sec [41,768..42,765] → 38,625 ops/sec [38,418..41,907] ~ overlap (-9.2%)
short (10 chars) 369,418 ops/sec [367,169..370,769] → 376,178 ops/sec [371,681..378,525] 🟢 +1.8% 405,702 ops/sec [402,733..407,982] → 414,958 ops/sec [411,030..419,208] 🟢 +2.3%
medium (900 chars) 233,693 ops/sec [231,236..235,814] → 230,115 ops/sec [193,602..233,777] ~ overlap (-1.5%) 244,368 ops/sec [241,079..246,782] → 237,134 ops/sec [235,803..237,463] 🔴 -3.0%
large (8192 chars) 57,639 ops/sec [57,017..57,669] → 57,090 ops/sec [56,340..57,139] ~ overlap (-1.0%) 58,709 ops/sec [58,007..59,206] → 53,002 ops/sec [52,033..54,340] 🔴 -9.7%
setFromBase64 (450 bytes) 131,396 ops/sec [131,196..131,618] → 132,079 ops/sec [128,772..133,919] ~ overlap (+0.5%) 147,482 ops/sec [146,224..148,206] → 146,153 ops/sec [145,274..146,902] ~ overlap (-0.9%)
setFromHex (450 bytes) 203,289 ops/sec [202,446..204,214] → 197,505 ops/sec [177,229..201,382] 🔴 -2.8% 237,841 ops/sec [236,332..238,469] → 211,083 ops/sec [210,741..212,490] 🔴 -11.3%
toBase64 → fromBase64 (450 bytes) 101,662 ops/sec [101,093..103,035] → 103,697 ops/sec [101,015..104,200] ~ overlap (+2.0%) 107,066 ops/sec [107,034..107,144] → 104,252 ops/sec [103,565..104,854] 🔴 -2.6%
toHex → fromHex (450 bytes) 139,391 ops/sec [138,286..139,709] → 137,553 ops/sec [123,856..138,864] ~ overlap (-1.3%) 141,809 ops/sec [141,285..141,895] → 135,068 ops/sec [134,677..136,077] 🔴 -4.8%

Measured on ubuntu-latest x64. Benchmark ranges compare cached main-branch min/max ops/sec with the PR run; overlapping ranges are treated as unchanged noise. Percentage deltas are secondary context.

@github-actions
Copy link
Copy Markdown
Contributor

Suite Timing

Suite Metric Interpreted Bytecode
Tests Total 5208 5208
Tests Passed 5167 ✅ 5208 ✅
Tests Skipped 41 0
Tests Test Duration 360.5ms 333.2ms
Tests Lex 100.6ms 69.5ms
Tests Parse 130.2ms 133.8ms
Tests Compile 80.8ms
Tests Execute 378.9ms 370.0ms
Tests Engine Total 609.7ms 654.1ms
Benchmarks Total 364 364
Benchmarks Duration 9.95min 8.96min

Measured on ubuntu-latest x64.

@frostney frostney merged commit 495b2f3 into main Apr 12, 2026
9 checks passed
@frostney frostney deleted the docs/fix-backtick-formatting-283 branch April 12, 2026 15:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

docs: fix nested backtick formatting in language-restrictions.md template literal example

1 participant