Skip to content

Update repository skills#199

Merged
frostney merged 1 commit into
mainfrom
skills-update
Apr 7, 2026
Merged

Update repository skills#199
frostney merged 1 commit into
mainfrom
skills-update

Conversation

@frostney
Copy link
Copy Markdown
Owner

@frostney frostney commented Apr 7, 2026

Summary

Update project skills for AI coding agents

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Apr 7, 2026

Warning

Rate limit exceeded

@frostney has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 10 minutes and 49 seconds before requesting another review.

Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 10 minutes and 49 seconds.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: d5c92174-4471-460f-9571-93ea646c45ff

📥 Commits

Reviewing files that changed from the base of the PR and between cdaca31 and e0335b9.

📒 Files selected for processing (3)
  • .agents/skills/find-skills/SKILL.md
  • .agents/skills/grill-me/SKILL.md
  • skills-lock.json
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch skills-update

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

Benchmark Results

274 benchmarks

Interpreted: 🟢 69 improved · 🔴 68 regressed · 137 unchanged · avg +0.1%
Bytecode: 🟢 20 improved · 🔴 216 regressed · 38 unchanged · avg -4.5%

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

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

@github-actions
Copy link
Copy Markdown
Contributor

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 210.9ms 186.3ms
Tests Engine 385.7ms 674.5ms
Benchmarks Total 274 274
Benchmarks Duration 7.43min 6.18min

Measured on ubuntu-latest x64.

@frostney frostney merged commit ec00873 into main Apr 7, 2026
9 checks passed
@frostney frostney deleted the skills-update branch April 7, 2026 13:55
@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