Skip to content

Add CLAUDE.md symlink to AGENTS.md#197

Merged
frostney merged 1 commit into
mainfrom
t3code/symlink-agents-claude
Apr 7, 2026
Merged

Add CLAUDE.md symlink to AGENTS.md#197
frostney merged 1 commit into
mainfrom
t3code/symlink-agents-claude

Conversation

@frostney
Copy link
Copy Markdown
Owner

@frostney frostney commented Apr 7, 2026

Summary

  • Added CLAUDE.md as a symlink to AGENTS.md.
  • Keeps Claude-specific agent instructions aligned with the existing repository guidance.

Testing

  • Not run (documentation/symlink-only change).
  • Verified the diff adds a single symlink entry pointing to AGENTS.md.

Summary by CodeRabbit

  • Documentation
    • Added new documentation file to provide additional information to users.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Apr 7, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 12101811-7f3e-4771-ac50-da88adff3087

📥 Commits

Reviewing files that changed from the base of the PR and between 22e9f40 and 013e86e.

📒 Files selected for processing (1)
  • CLAUDE.md

📝 Walkthrough

Walkthrough

A new file AGENTS.md was added to the repository root containing minimal content. No existing files were modified, and no changes were made to exported or public entities.

Changes

Cohort / File(s) Summary
New Documentation File
AGENTS.md
New file added at repository root with minimal content and no trailing newline.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~2 minutes

Poem

🐰 A new file hops into place,
AGENTS.md finds its space,
With eager content, fresh and light,
Our repo grows a little bright! ✨

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately describes the main change: adding a CLAUDE.md symlink to AGENTS.md, which matches the pull request objective.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch t3code/symlink-agents-claude

Warning

Review ran into problems

🔥 Problems

Git: Failed to clone repository. Please run the @coderabbitai full review command to re-trigger a full review. If the issue persists, set path_filters to include or exclude specific files.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 7, 2026

Suite Timing

Suite Metric Interpreted Bytecode
Tests Total 3701 3701
Tests Passed 3660 ✅ 3701 ✅
Tests Skipped 41 0
Tests Execution 218.0ms 192.4ms
Tests Engine 395.2ms 677.6ms
Benchmarks Total 274 274
Benchmarks Duration 7.40min 6.45min

Measured on ubuntu-latest x64.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 7, 2026

Benchmark Results

274 benchmarks

Interpreted: 🟢 10 improved · 🔴 237 regressed · 27 unchanged · avg -5.9%
Bytecode: 🟢 97 improved · 🔴 86 regressed · 91 unchanged · avg +0.2%

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

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.

@frostney frostney merged commit cdaca31 into main Apr 7, 2026
9 checks passed
@frostney frostney deleted the t3code/symlink-agents-claude branch April 7, 2026 12:44
@frostney frostney added the internal Refactoring, CI, tooling, cleanup label Apr 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

internal Refactoring, CI, tooling, cleanup

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant