Skip to content

Fix CSV and TSV header option examples#452

Merged
frostney merged 1 commit into
mainfrom
t3code/csv-tsv-header-fix
Apr 29, 2026
Merged

Fix CSV and TSV header option examples#452
frostney merged 1 commit into
mainfrom
t3code/csv-tsv-header-fix

Conversation

@frostney
Copy link
Copy Markdown
Owner

Summary

  • update CSV and TSV website snippets to use the canonical headers option
  • keep runtime behavior unchanged with headers as the only supported option

Verification

  • pre-commit hooks passed for the committed files
  • bun run lint could not run locally because biome is not installed in this checkout

@vercel
Copy link
Copy Markdown

vercel Bot commented Apr 29, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
gocciascript-homepage Ready Ready Preview, Comment Apr 29, 2026 0:51am

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Apr 29, 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: c5b0c135-49e5-4821-a99a-065928d7e611

📥 Commits

Reviewing files that changed from the base of the PR and between fc1fa59 and 2311aa3.

📒 Files selected for processing (2)
  • website/src/lib/examples.ts
  • website/src/lib/landing-data.ts

📝 Walkthrough

Walkthrough

This change updates CSV parsing configurations across example and documentation files, correcting the runtime parameter from header: true to headers: true for consistency and alignment with the correct option name.

Changes

Cohort / File(s) Summary
CSV Configuration Updates
website/src/lib/examples.ts, website/src/lib/landing-data.ts
Updated CSV/TSV parsing options from header: true to headers: true in example code and documentation snippets to use the correct parameter name.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~3 minutes

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
Description check ❓ Inconclusive The description covers the summary and verification sections but deviates from the template by omitting the Testing checklist section with verification items. Consider adopting the Testing checklist format from the template to clearly document all verification steps performed, especially regarding linting verification attempts.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely summarizes the main change: updating CSV and TSV header option examples from 'header' to 'headers'.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

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


Review rate limit: 2/5 reviews remaining, refill in 33 minutes and 39 seconds.

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

@github-actions
Copy link
Copy Markdown
Contributor

Benchmark Results

407 benchmarks

Interpreted: 🟢 285 improved · 🔴 10 regressed · 112 unchanged · avg +6.8%
Bytecode: 🟢 338 improved · 🔴 16 regressed · 53 unchanged · avg +8.8%

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

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 8243 8243
Tests Passed 8202 ✅ 8243 ✅
Tests Skipped 41 0
Tests Workers 4 4
Tests Test Duration 1.90s 1.90s
Tests Lex (cumulative) 215.1ms 140.4ms
Tests Parse (cumulative) 323.8ms 335.9ms
Tests Compile (cumulative) 206.5ms
Tests Execute (cumulative) 1.62s 1.53s
Tests Engine Total (cumulative) 2.16s 2.21s
Tests Lex (avg/worker) 53.8ms 35.1ms
Tests Parse (avg/worker) 80.9ms 84.0ms
Tests Compile (avg/worker) 51.6ms
Tests Execute (avg/worker) 405.6ms 382.6ms
Tests Engine Total (avg/worker) 540.3ms 553.3ms
Benchmarks Total 407 407
Benchmarks Workers 4 4
Benchmarks Duration 2.53min 2.41min

Measured on ubuntu-latest x64.

@frostney frostney merged commit ba88a51 into main Apr 29, 2026
12 checks passed
@frostney frostney deleted the t3code/csv-tsv-header-fix branch April 29, 2026 13:04
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.

1 participant