Skip to content

Add default GitHub issue template#195

Merged
frostney merged 2 commits into
mainfrom
t3code/issue-template-summary
Apr 7, 2026
Merged

Add default GitHub issue template#195
frostney merged 2 commits into
mainfrom
t3code/issue-template-summary

Conversation

@frostney
Copy link
Copy Markdown
Owner

@frostney frostney commented Apr 7, 2026

Summary

  • Added a default GitHub issue template at .github/ISSUE_TEMPLATE/default.md.
  • The template prompts reporters to describe the change, rationale, current behavior, expected behavior, and scope notes.
  • Includes frontmatter fields for name, about, title, labels, and assignees.

Testing

  • Not run (documentation-only change).
  • Verified the new template file was added with the expected issue sections and frontmatter.

Summary by CodeRabbit

  • Chores
    • Added a standardized GitHub issue template to streamline issue submissions. The template includes predefined sections for Summary, rationale, current behavior, expected behavior, and scope, helping contributors provide comprehensive information when reporting issues or requesting features.

- Add a GitHub issue template for feature, fix, and scoped change requests
- Prompt for summary, rationale, current behavior, expected behavior, and scope notes
@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 19 minutes and 28 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 19 minutes and 28 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: 178b412a-aa19-4084-8981-9fcc68365297

📥 Commits

Reviewing files that changed from the base of the PR and between 8d97430 and 7da495b.

📒 Files selected for processing (1)
  • .github/ISSUE_TEMPLATE/default.md
📝 Walkthrough

Walkthrough

A new GitHub issue template was added to standardize issue submissions with predefined YAML configuration and Markdown sections for feature requests, bug reports, and scoped changes.

Changes

Cohort / File(s) Summary
GitHub Issue Template
.github/ISSUE_TEMPLATE/default.md
Added new issue template with YAML front matter and predefined sections (Summary, Why, Current behavior, Expected behavior, Scope) to standardize issue reporting.

Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~3 minutes

Poem

🐰 A template for issues, so tidy and neat,
With sections that make each report complete,
No more scattered words, just structure divine,
Our burrow of bugs now organized fine! ✨

🚥 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 'Add default GitHub issue template' directly and clearly describes the main change—adding a new GitHub issue template file. It is concise, specific, and accurately reflects the primary purpose of the changeset.
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/issue-template-summary

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.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
.github/ISSUE_TEMPLATE/default.md (1)

15-22: Optional: add “Reproduction steps” and “Environment” prompts for bug reports.

This can improve first-pass debugging quality without changing the template’s intent.

Suggested template extension
 ## Current behavior
 What happens today?
 
+## Reproduction steps
+How can we reproduce it?
+
+## Environment
+OS, runtime/toolchain version, and relevant dependency versions.
+
 ## Expected behavior
 What should happen instead?
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/ISSUE_TEMPLATE/default.md around lines 15 - 22, Update the issue
template to include two optional prompts for bug reports: add a "Reproduction
steps" section and an "Environment" section adjacent to the existing headings
(e.g., near "## Current behavior", "## Expected behavior", or "## Scope notes")
so reporters can provide steps to reproduce and runtime details (OS, browser,
versions, config) without changing intent; ensure the new headings are clearly
labeled as optional and placed logically within the template to improve
first-pass debugging.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In @.github/ISSUE_TEMPLATE/default.md:
- Around line 15-22: Update the issue template to include two optional prompts
for bug reports: add a "Reproduction steps" section and an "Environment" section
adjacent to the existing headings (e.g., near "## Current behavior", "##
Expected behavior", or "## Scope notes") so reporters can provide steps to
reproduce and runtime details (OS, browser, versions, config) without changing
intent; ensure the new headings are clearly labeled as optional and placed
logically within the template to improve first-pass debugging.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 9a037b0c-3e68-44bd-b5c8-dff7f637f7fb

📥 Commits

Reviewing files that changed from the base of the PR and between a11c22c and 8d97430.

📒 Files selected for processing (1)
  • .github/ISSUE_TEMPLATE/default.md

- Add guidance to include repro steps and environment details for bugs
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 7, 2026

Suite Timing

Suite Metric Interpreted Bytecode
Tests Total 3691 3691
Tests Passed 3650 ✅ 3691 ✅
Tests Skipped 41 0
Tests Execution 193.0ms 198.2ms
Tests Engine 355.9ms 685.1ms
Benchmarks Total 274 274
Benchmarks Duration 7.30min 6.32min

Measured on ubuntu-latest x64.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Apr 7, 2026

Benchmark Results

274 benchmarks

Interpreted: 🟢 138 improved · 🔴 100 regressed · 36 unchanged · avg +1.5%
Bytecode: 🟢 3 improved · 🔴 261 regressed · 10 unchanged · avg -9.2%

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

@frostney frostney merged commit ebe606f into main Apr 7, 2026
9 checks passed
@frostney frostney deleted the t3code/issue-template-summary branch April 7, 2026 10:42
@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