Skip to content

chore(test262): bump pin to 020cb740#905

Merged
frostney merged 1 commit into
mainfrom
chore/test262-bump
Jun 29, 2026
Merged

chore(test262): bump pin to 020cb740#905
frostney merged 1 commit into
mainfrom
chore/test262-bump

Conversation

@github-actions

Copy link
Copy Markdown
Contributor

Automated bump of the test262 SHA pin to 020cb74075849d1e404bbcdb62feb7a02e6966db.

CI will run the conformance suite against the new SHA. The
test262 PR comment will show the per-category delta vs. the
cached main baseline. Review the delta and merge if
acceptable.

Cron: weekly, Mondays 06:00 UTC. See .github/workflows/test262-bump.yml.

@github-actions github-actions Bot added automated Pull request completely generated by automation spec compliance Mismatch against official JavaScript/TypeScript specification labels Jun 29, 2026
@vercel

vercel Bot commented Jun 29, 2026

Copy link
Copy Markdown

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

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
gocciascript-homepage Ignored Ignored Preview Jun 29, 2026 7:53am

Request Review

@github-actions

Copy link
Copy Markdown
Contributor Author

Suite Timing

Test Runner (interpreted: 11,046 passed; bytecode: 11,046 passed)
Metric Interpreted Bytecode
Total 11046 11046
Passed 11046 ✅ 11046 ✅
Workers 4 4
Test Duration 18.63s 18.93s
Lex (cumulative) 464.4ms 521.8ms
Parse (cumulative) 356.7ms 389.1ms
Compile (cumulative) 835.7ms
Execute (cumulative) 84.6ms 45.05s
Engine Total (cumulative) 905.7ms 46.80s
Lex (avg/worker) 116.1ms 130.4ms
Parse (avg/worker) 89.2ms 97.3ms
Compile (avg/worker) 208.9ms
Execute (avg/worker) 21.2ms 11.26s
Engine Total (avg/worker) 226.4ms 11.70s

Memory

GC rows aggregate the main thread plus all worker thread-local GCs. Test runner worker shutdown frees thread-local heaps in bulk; that shutdown reclamation is not counted as GC collections or collected objects.

Metric Interpreted Bytecode
GC Live 283.78 MiB 281.18 MiB
GC Peak Live 353.66 MiB 316.21 MiB
GC Allocated During Run 531.00 MiB 474.99 MiB
GC Limit 7.81 GiB 7.81 GiB
GC Collections 195 195
GC Collected Objects 2,605,579 2,172,734
Heap Start Allocated 182.6 KiB 182.6 KiB
Heap End Allocated 3.66 MiB 3.66 MiB
Heap Delta Allocated 3.48 MiB 3.48 MiB
Heap Delta Free 1.68 MiB 1.68 MiB
Benchmarks (interpreted: 437; bytecode: 437)
Metric Interpreted Bytecode
Total 437 437
Workers 4 4
Duration 2.96min 2.85min

Memory

GC rows aggregate the main thread plus all worker thread-local GCs. Benchmark runner performs explicit between-file collections, so collection and collected-object counts can be much higher than the test runner.

Metric Interpreted Bytecode
GC Live 6.28 MiB 6.28 MiB
GC Peak Live 104.22 MiB 96.22 MiB
GC Allocated During Run 16.00 GiB 13.35 GiB
GC Limit 7.81 GiB 7.81 GiB
GC Collections 3,699 3,614
GC Collected Objects 250,148,472 305,071,574
Heap Start Allocated 3.36 MiB 3.36 MiB
Heap End Allocated 3.36 MiB 3.36 MiB
Heap Delta Allocated 128 B 128 B

Measured on ubuntu-latest x64.

@github-actions

Copy link
Copy Markdown
Contributor Author

Benchmark Results

437 benchmarks · PR vs same-runner main build

Interpreted: 🟢 35 improved · 🔴 32 regressed · 370 unchanged · avg +0.6%
Bytecode: 🟢 16 improved · 🔴 38 regressed · 383 unchanged · avg +0.0%

Typical per-run noise (median variance): interpreted ±3.2%, bytecode ±2.7%. Deltas within noise overlap and read as unchanged.

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

Deterministic profile diff

Deterministic profile diff: no significant changes.

Measured on ubuntu-latest x64. Each PR run also builds the main base and benchmarks it back-to-back on the same runner after a warm-up discard, so the ranges compare two runs measured under the same conditions; overlapping min/max ranges are treated as unchanged noise. Percentage deltas are secondary context. See docs/adr/0076.

@github-actions

Copy link
Copy Markdown
Contributor Author

test262 Conformance

🚫 Regression vs cached main baseline. 1 previously-passing test(s) now fail; pass count Δ -1. This run blocks merge — see "Newly failing" below.

Category Run Passed Δ Pass Failed Pass-rate Δ Rate
built-ins 23,642 22,618 ±0 1,024 95.7% ±0pp
harness 116 116 ±0 0 100.0% ±0pp
intl402 3,341 3,334 -1 7 99.8% ±0pp
language 23,711 23,711 ±0 0 100.0% ±0pp
staging 1,482 1,111 ±0 371 75.0% ±0pp
total 52,292 50,890 -1 1,402 97.3% ±0pp

Areas closest to 100%

Area Pass rate Δ vs main Passing
built-ins/TypedArray 99.9% ±0pp 1,445 / 1,446
intl402/Temporal 99.9% ±0pp 2,026 / 2,029
built-ins/Object 99.7% ±0pp 3,401 / 3,411
Per-test deltas (+1 / -1)

Newly failing (1):

  • intl402/DateTimeFormat/prototype/formatToParts/compare-to-temporal.js

Newly passing (1):

  • built-ins/Number/prototype/toExponential/undefined-fractiondigits.js

Steady-state failures are non-blocking; regressions vs the cached main baseline (lower total pass count, or any PASS → non-PASS transition) fail the conformance gate. Measured on ubuntu-latest x64, bytecode mode. Areas grouped by the first two test262 path components; minimum 25 attempted tests, areas already at 100% excluded. Δ vs main compares against the most recent cached main baseline.

@frostney frostney merged commit 9b2c7f4 into main Jun 29, 2026
13 of 14 checks passed
@frostney frostney deleted the chore/test262-bump branch June 29, 2026 16:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

automated Pull request completely generated by automation spec compliance Mismatch against official JavaScript/TypeScript specification

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant