Skip to content

lib: place value before done in iterator results - #66837

Merged
nodejs-github-bot merged 3 commits into
nodejs:mainfrom
bakkot:iterator-result-value-first
Nov 3, 2026
Merged

nodejs-github-bot merged 3 commits into
nodejs:mainfrom
bakkot:iterator-result-value-first

Conversation

@bakkot

@bakkot bakkot commented Oct 18, 2026

Copy link
Copy Markdown
Contributor

Spec requires this order, plus V8 optimizes it and not the reverse; as such this has some performance benefits (in this microbenchmark).

cc @trivikr since you added the lint rule enforcing the opposite order in #63526.

benchmark config ops/sec time per op
url/url-searchparams-iterator-consumers.js method='Map' +35.6% *** −26%
url/url-searchparams-iterator-consumers.js method='Array.from' +24.2% *** −19%
url/url-searchparams-iterator-consumers.js method='Object.fromEntries' +18.0% *** −15%
url/url-searchparams-iterator-consumers.js method='for-of' −0.9% *** +0.9%
webstreams/readable-async-iterator.js type='normal' +4.8% *** −4.6%
webstreams/readable-async-iterator.js type='bytes' +2.2% *** −2.1%
streams/readable-async-iterator.js sync='yes' +3.2% ** −3.1%
streams/readable-async-iterator.js sync='no' +1.4% * −1.4%

Assisted-by: claude:opus-5.5
Signed-off-by: Kevin Gibbons <bakkot@gmail.com>
V8 has a fast path for `{ value, done }` literals, but it must be that order.
Also, the ES spec technically requires that order.

Assisted-by: claude:opus-5.5
Signed-off-by: Kevin Gibbons <bakkot@gmail.com>
Apply the iterator-result-value-first lint fixer.

Assisted-by: claude:opus-5.5
Signed-off-by: Kevin Gibbons <bakkot@gmail.com>
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

Review requested:

  • @nodejs/performance
  • @nodejs/streams
  • @nodejs/url

@nodejs-github-bot nodejs-github-bot added lib / src Issues and PRs involving general changes in the lib/ or src/ directories. needs-ci PRs that need a full CI run. labels Oct 18, 2026
@codecov

codecov Bot commented Oct 18, 2026 •

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 84.21053% with 6 lines in your changes missing coverage. Please review.
✅ Project coverage is 90.49%. Comparing base (e463b48) to head (71922e3).
⚠️ Report is 234 commits behind head on main.

Files with missing lines Patch % Lines
lib/internal/webstreams/readablestream.js 85.71% 2 Missing ⚠️
lib/internal/fs/promises.js 80.00% 1 Missing ⚠️
lib/internal/source_map/source_map_cache_map.js 0.00% 1 Missing ⚠️
lib/internal/streams/readable.js 88.88% 1 Missing ⚠️
lib/internal/vfs/watcher.js 83.33% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main   #66837      +/-   ##
==========================================
- Coverage   92.85%   90.49%   -2.36%     
==========================================
  Files         428      797     +369     
  Lines      194833   277793   +82960     
  Branches    30108    53361   +23253     
==========================================
+ Hits       180907   251399   +70492     
- Misses      13599    16801    +3202     
- Partials      327     9593    +9266     
Files with missing lines Coverage Δ
lib/events.js 99.60% <100.00%> (+6.28%) ⬆️
lib/internal/url.js 93.40% <100.00%> (+12.45%) ⬆️
lib/internal/fs/promises.js 91.13% <80.00%> (+2.07%) ⬆️
lib/internal/source_map/source_map_cache_map.js 85.95% <0.00%> (ø)
lib/internal/streams/readable.js 95.91% <88.88%> (ø)
lib/internal/vfs/watcher.js 95.21% <83.33%> (ø)
lib/internal/webstreams/readablestream.js 98.11% <85.71%> (+0.04%) ⬆️

... and 497 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@trivikr
trivikr requested a review from jasnell October 19, 2026 01:21
@trivikr

trivikr commented Oct 19, 2026

Copy link
Copy Markdown
Member

FYI @jasnell as the original discussion was in #63521 (comment) (also linked in PR description #63526)

@LiviaMedeiros LiviaMedeiros left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

The performance boost looks promising. Is this applicable to IterResult?

@saqibsafwan4-code

This comment was marked as off-topic.

@bakkot

bakkot commented Oct 19, 2026 •

Copy link
Copy Markdown
Contributor Author

Is this applicable to IterResult?

Assuming you mean this one, no, the objects it creates have a different prototype (to avoid Object.prototype.then pollution) and so cannot share the V8 map.

@trivikr trivikr added the request-ci Add this label to start a Jenkins CI on a PR. Only starts once the PR has an approving review. label Oct 19, 2026
@github-actions github-actions Bot removed the request-ci Add this label to start a Jenkins CI on a PR. Only starts once the PR has an approving review. label Oct 19, 2026
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@LiviaMedeiros LiviaMedeiros left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Assuming you mean this one, no, the objects it creates have a different prototype (to avoid Object.prototype.then pollution) and so cannot share the V8 map.

I wonder if reordering it purely for the sake of consistency would be worth the churn. Probably not (or at least not in the scope of this PR) so LGTM as is.

@trivikr trivikr added author ready PRs with CI started, the required approvals, and no outstanding review comments. needs-benchmark-ci PRs that need a benchmark CI run. labels Oct 20, 2026
@LiviaMedeiros

Copy link
Copy Markdown
Member

Benchmark CI: https://ci.nodejs.org/view/Node.js%20benchmark/job/benchmark-node-micro-benchmarks/1901/

@bakkot

bakkot commented Oct 21, 2026

Copy link
Copy Markdown
Contributor Author

I can't see the benchmark; could someone relay the result? (Or give me permissions to see it.)

@H4ad

H4ad commented Oct 22, 2026

Copy link
Copy Markdown
Member

Benchmark Results:

url/legacy-url-get-prop.js e=1 type='long'                                                                                                       -5.56 %   ±9.28%  ±12.35%  ±16.09%
url/legacy-url-get-prop.js e=1 type='short'                                                                                                      +0.35 %   ±4.50%  ±5.99%  ±7.81%
url/legacy-url-get-prop.js e=1 type='idn'                                                                                                        -2.82 %   ±6.64%  ±8.84%  ±11.52%
url/legacy-url-get-prop.js e=1 type='auth'                                                                                                       -1.15 %   ±5.75%  ±7.66%  ±9.99%
url/legacy-url-get-prop.js e=1 type='file'                                                                                                       -5.53 %   ±6.19%  ±8.24%  ±10.74%
url/legacy-url-get-prop.js e=1 type='ws'                                                                                                         +0.68 %   ±6.62%  ±8.80%  ±11.46%
url/legacy-url-get-prop.js e=1 type='javascript'                                                                                   *             -4.33 %   ±4.00%  ±5.33%  ±6.93%
url/legacy-url-get-prop.js e=1 type='percent'                                                                                                    +0.18 %   ±5.06%  ±6.73%  ±8.77%
url/legacy-url-get-prop.js e=1 type='dot'                                                                                                        -0.96 %   ±4.74%  ±6.31%  ±8.24%
url/legacy-url-get-prop.js e=1 type='wpt'                                                                                                        +2.39 %   ±12.43%  ±16.54%  ±21.53%
url/legacy-url-parse.js e=1 type='long'                                                                                                          +0.00 %   ±5.14%  ±6.85%  ±8.93%
url/legacy-url-parse.js e=1 type='short'                                                                                                         -1.23 %   ±4.86%  ±6.51%  ±8.58%
url/legacy-url-parse.js e=1 type='idn'                                                                                                           -6.23 %   ±6.86%  ±9.14%  ±11.91%
url/legacy-url-parse.js e=1 type='auth'                                                                                                          -1.63 %   ±2.21%  ±2.95%  ±3.85%
url/legacy-url-parse.js e=1 type='file'                                                                                                          -2.55 %   ±3.72%  ±4.95%  ±6.45%
url/legacy-url-parse.js e=1 type='ws'                                                                                                            -2.43 %   ±3.34%  ±4.48%  ±5.90%
url/legacy-url-parse.js e=1 type='javascript'                                                                                                    +0.23 %   ±2.90%  ±3.86%  ±5.03%
url/legacy-url-parse.js e=1 type='percent'                                                                                                       +0.40 %   ±3.39%  ±4.53%  ±5.96%
url/legacy-url-parse.js e=1 type='dot'                                                                                                           +1.55 %   ±3.07%  ±4.09%  ±5.35%
url/legacy-url-parse.js e=1 type='wpt'                                                                                             *            -19.11 %   ±15.28%  ±20.34%  ±26.49%
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='legacy' searchParam='noencode'                                                  +0.54 %   ±1.05%  ±1.40%  ±1.82%
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='whatwg' searchParam='noencode'                                                  -0.14 %   ±1.80%  ±2.40%  ±3.12%
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='legacy' searchParam='multicharsep'                                              -1.09 %   ±1.14%  ±1.52%  ±1.98%
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='whatwg' searchParam='multicharsep'                                              -0.44 %   ±1.17%  ±1.56%  ±2.03%
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='legacy' searchParam='encodefake'                                                +0.22 %   ±0.92%  ±1.22%  ±1.59%
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='whatwg' searchParam='encodefake'                                                +0.21 %   ±1.29%  ±1.71%  ±2.23%
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='legacy' searchParam='encodemany'                                                -0.12 %   ±0.44%  ±0.59%  ±0.77%
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='whatwg' searchParam='encodemany'                                                -0.07 %   ±0.64%  ±0.85%  ±1.11%
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='legacy' searchParam='encodelast'                                                -0.24 %   ±0.72%  ±0.95%  ±1.24%
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='whatwg' searchParam='encodelast'                                                -0.40 %   ±0.69%  ±0.92%  ±1.19%
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='legacy' searchParam='multivalue'                                                -0.44 %   ±0.85%  ±1.14%  ±1.48%
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='whatwg' searchParam='multivalue'                                                +0.40 %   ±1.59%  ±2.11%  ±2.75%
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='legacy' searchParam='multivaluemany'                                            -0.46 %   ±0.96%  ±1.28%  ±1.67%
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='whatwg' searchParam='multivaluemany'                                            -0.05 %   ±0.71%  ±0.94%  ±1.23%
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='legacy' searchParam='manypairs'                                                 +0.54 %   ±1.07%  ±1.42%  ±1.85%
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='whatwg' searchParam='manypairs'                                                 -0.24 %   ±1.31%  ±1.74%  ±2.27%
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='legacy' searchParam='manyblankpairs'                                            -0.42 %   ±2.33%  ±3.10%  ±4.03%
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='whatwg' searchParam='manyblankpairs'                                            -0.74 %   ±1.34%  ±1.78%  ±2.32%
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='legacy' searchParam='altspaces'                                                 -0.01 %   ±1.30%  ±1.73%  ±2.26%
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='whatwg' searchParam='altspaces'                                                 -0.45 %   ±0.59%  ±0.79%  ±1.02%
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='legacy' searchParam='noencode'                                              -0.67 %   ±1.32%  ±1.76%  ±2.29%
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='whatwg' searchParam='noencode'                                              +2.35 %   ±5.73%  ±7.66%  ±10.02%
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='legacy' searchParam='multicharsep'                                          -1.64 %   ±2.08%  ±2.78%  ±3.64%
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='whatwg' searchParam='multicharsep'                            *             -3.94 %   ±3.23%  ±4.29%  ±5.59%
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='legacy' searchParam='encodefake'                                            -0.20 %   ±0.98%  ±1.31%  ±1.70%
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='whatwg' searchParam='encodefake'                                            +0.06 %   ±3.57%  ±4.75%  ±6.18%
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='legacy' searchParam='encodemany'                                            +0.07 %   ±1.25%  ±1.66%  ±2.16%
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='whatwg' searchParam='encodemany'                                            +0.30 %   ±3.15%  ±4.20%  ±5.47%
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='legacy' searchParam='encodelast'                                            -0.53 %   ±1.06%  ±1.40%  ±1.83%
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='whatwg' searchParam='encodelast'                                            +0.59 %   ±3.61%  ±4.80%  ±6.25%
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='legacy' searchParam='multivalue'                                            -0.07 %   ±1.21%  ±1.61%  ±2.10%
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='whatwg' searchParam='multivalue'                                            -0.91 %   ±3.38%  ±4.49%  ±5.85%
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='legacy' searchParam='multivaluemany'                                        +0.91 %   ±1.18%  ±1.56%  ±2.04%
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='whatwg' searchParam='multivaluemany'                                        -0.83 %   ±3.87%  ±5.15%  ±6.71%
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='legacy' searchParam='manypairs'                                             +0.15 %   ±1.79%  ±2.38%  ±3.09%
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='whatwg' searchParam='manypairs'                                             -0.62 %   ±3.18%  ±4.23%  ±5.51%
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='legacy' searchParam='manyblankpairs'                                        -1.52 %   ±5.47%  ±7.28%  ±9.48%
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='whatwg' searchParam='manyblankpairs'                                        -0.58 %   ±3.89%  ±5.18%  ±6.75%
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='legacy' searchParam='altspaces'                                             +0.59 %   ±1.15%  ±1.53%  ±1.99%
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='whatwg' searchParam='altspaces'                                             +1.28 %   ±5.53%  ±7.39%  ±9.69%
url/legacy-vs-whatwg-url-serialize.js e=1 method='legacy' type='long'                                                                            -3.04 %   ±4.54%  ±6.05%  ±7.88%
url/legacy-vs-whatwg-url-serialize.js e=1 method='whatwg' type='long'                                                                            +0.03 %   ±2.47%  ±3.28%  ±4.27%
url/legacy-vs-whatwg-url-serialize.js e=1 method='legacy' type='short'                                                                           +0.91 %   ±3.82%  ±5.09%  ±6.66%
url/legacy-vs-whatwg-url-serialize.js e=1 method='whatwg' type='short'                                                                           +4.00 %   ±4.31%  ±5.79%  ±7.65%
url/legacy-vs-whatwg-url-serialize.js e=1 method='legacy' type='idn'                                                                             -1.07 %   ±5.88%  ±7.82%  ±10.18%
url/legacy-vs-whatwg-url-serialize.js e=1 method='whatwg' type='idn'                                                                             +0.45 %   ±6.80%  ±9.06%  ±11.80%
url/legacy-vs-whatwg-url-serialize.js e=1 method='legacy' type='auth'                                                                            -2.98 %   ±6.02%  ±8.01%  ±10.43%
url/legacy-vs-whatwg-url-serialize.js e=1 method='whatwg' type='auth'                                                                            -1.22 %   ±2.77%  ±3.68%  ±4.80%
url/legacy-vs-whatwg-url-serialize.js e=1 method='legacy' type='file'                                                                            +3.98 %   ±5.32%  ±7.12%  ±9.37%
url/legacy-vs-whatwg-url-serialize.js e=1 method='whatwg' type='file'                                                                            -2.81 %   ±3.66%  ±4.92%  ±6.48%
url/legacy-vs-whatwg-url-serialize.js e=1 method='legacy' type='ws'                                                               **             -4.02 %   ±2.97%  ±3.97%  ±5.20%
url/legacy-vs-whatwg-url-serialize.js e=1 method='whatwg' type='ws'                                                                              -3.57 %   ±4.35%  ±5.83%  ±7.66%
url/legacy-vs-whatwg-url-serialize.js e=1 method='legacy' type='javascript'                                                                      -1.28 %   ±1.80%  ±2.41%  ±3.15%
url/legacy-vs-whatwg-url-serialize.js e=1 method='whatwg' type='javascript'                                                                      -3.66 %   ±4.05%  ±5.43%  ±7.14%
url/legacy-vs-whatwg-url-serialize.js e=1 method='legacy' type='percent'                                                                         -1.04 %   ±3.80%  ±5.05%  ±6.58%
url/legacy-vs-whatwg-url-serialize.js e=1 method='whatwg' type='percent'                                                                         -1.53 %   ±5.55%  ±7.39%  ±9.62%
url/legacy-vs-whatwg-url-serialize.js e=1 method='legacy' type='dot'                                                                             +1.52 %   ±3.08%  ±4.11%  ±5.38%
url/legacy-vs-whatwg-url-serialize.js e=1 method='whatwg' type='dot'                                                                             -0.62 %   ±3.59%  ±4.78%  ±6.22%
url/legacy-vs-whatwg-url-serialize.js e=1 method='legacy' type='wpt'                                                                             -0.62 %   ±3.98%  ±5.30%  ±6.91%
url/legacy-vs-whatwg-url-serialize.js e=1 method='whatwg' type='wpt'                                                                             +0.70 %   ±3.05%  ±4.06%  ±5.29%
url/url-format.js n=25000000 type='slashes'                                                                                                      -0.31 %   ±2.11%  ±2.81%  ±3.66%
url/url-format.js n=25000000 type='file'                                                                                           *             -1.23 %   ±0.94%  ±1.26%  ±1.64%
url/url-parse.js n=10000000 type='normal'                                                                                                        +0.64 %   ±1.03%  ±1.37%  ±1.80%
url/url-parse.js n=10000000 type='escaped'                                                                                                       -0.39 %   ±0.82%  ±1.09%  ±1.41%
url/url-resolve.js n=100000 path='up' href='long'                                                                                                +0.08 %   ±0.66%  ±0.87%  ±1.13%
url/url-resolve.js n=100000 path='sibling' href='long'                                                                                           -0.15 %   ±0.60%  ±0.80%  ±1.05%
url/url-resolve.js n=100000 path='foo/bar' href='long'                                                                                           +0.03 %   ±0.54%  ±0.72%  ±0.94%
url/url-resolve.js n=100000 path='withscheme' href='long'                                                                                        -0.02 %   ±0.95%  ±1.26%  ±1.64%
url/url-resolve.js n=100000 path='down' href='long'                                                                                              +0.25 %   ±0.56%  ±0.75%  ±0.98%
url/url-resolve.js n=100000 path='up' href='short'                                                                                               -0.48 %   ±1.23%  ±1.64%  ±2.14%
url/url-resolve.js n=100000 path='sibling' href='short'                                                                                          +0.31 %   ±0.83%  ±1.11%  ±1.44%
url/url-resolve.js n=100000 path='foo/bar' href='short'                                                                                          +0.52 %   ±1.23%  ±1.64%  ±2.14%
url/url-resolve.js n=100000 path='withscheme' href='short'                                                                                       +0.89 %   ±0.98%  ±1.31%  ±1.71%
url/url-resolve.js n=100000 path='down' href='short'                                                                                             +0.31 %   ±1.24%  ±1.65%  ±2.15%
url/url-resolve.js n=100000 path='up' href='idn'                                                                                                 -0.42 %   ±0.98%  ±1.31%  ±1.70%
url/url-resolve.js n=100000 path='sibling' href='idn'                                                                                            -0.07 %   ±1.04%  ±1.39%  ±1.81%
url/url-resolve.js n=100000 path='foo/bar' href='idn'                                                                                            +0.82 %   ±1.08%  ±1.44%  ±1.87%
url/url-resolve.js n=100000 path='withscheme' href='idn'                                                                                         -0.08 %   ±0.69%  ±0.92%  ±1.20%
url/url-resolve.js n=100000 path='down' href='idn'                                                                                               +0.04 %   ±0.83%  ±1.11%  ±1.45%
url/url-resolve.js n=100000 path='up' href='auth'                                                                                                +0.64 %   ±0.83%  ±1.10%  ±1.44%
url/url-resolve.js n=100000 path='sibling' href='auth'                                                                                           +0.33 %   ±0.63%  ±0.84%  ±1.10%
url/url-resolve.js n=100000 path='foo/bar' href='auth'                                                                                           +0.48 %   ±1.07%  ±1.42%  ±1.85%
url/url-resolve.js n=100000 path='withscheme' href='auth'                                                                                        -0.86 %   ±0.86%  ±1.14%  ±1.49%
url/url-resolve.js n=100000 path='down' href='auth'                                                                                              -0.50 %   ±0.84%  ±1.12%  ±1.46%
url/url-resolve.js n=100000 path='up' href='file'                                                                                                +0.65 %   ±1.11%  ±1.47%  ±1.92%
url/url-resolve.js n=100000 path='sibling' href='file'                                                                                           +1.25 %   ±1.44%  ±1.92%  ±2.50%
url/url-resolve.js n=100000 path='foo/bar' href='file'                                                                                           -0.26 %   ±0.97%  ±1.30%  ±1.69%
url/url-resolve.js n=100000 path='withscheme' href='file'                                                                                        +0.02 %   ±1.02%  ±1.36%  ±1.77%
url/url-resolve.js n=100000 path='down' href='file'                                                                                              -0.74 %   ±1.27%  ±1.68%  ±2.19%
url/url-resolve.js n=100000 path='up' href='ws'                                                                                                  +0.10 %   ±0.71%  ±0.95%  ±1.24%
url/url-resolve.js n=100000 path='sibling' href='ws'                                                                                             +0.07 %   ±0.73%  ±0.98%  ±1.27%
url/url-resolve.js n=100000 path='foo/bar' href='ws'                                                                                             +0.02 %   ±1.01%  ±1.34%  ±1.74%
url/url-resolve.js n=100000 path='withscheme' href='ws'                                                                                          +0.08 %   ±0.90%  ±1.20%  ±1.56%
url/url-resolve.js n=100000 path='down' href='ws'                                                                                                +0.14 %   ±0.84%  ±1.11%  ±1.45%
url/url-resolve.js n=100000 path='up' href='javascript'                                                                            *             -1.47 %   ±1.23%  ±1.63%  ±2.12%
url/url-resolve.js n=100000 path='sibling' href='javascript'                                                                                     +0.39 %   ±1.01%  ±1.35%  ±1.76%
url/url-resolve.js n=100000 path='foo/bar' href='javascript'                                                                                     -0.55 %   ±1.64%  ±2.19%  ±2.85%
url/url-resolve.js n=100000 path='withscheme' href='javascript'                                                                                  -0.27 %   ±1.36%  ±1.81%  ±2.36%
url/url-resolve.js n=100000 path='down' href='javascript'                                                                                        +0.48 %   ±1.05%  ±1.40%  ±1.82%
url/url-resolve.js n=100000 path='up' href='percent'                                                                                             +0.08 %   ±1.19%  ±1.59%  ±2.07%
url/url-resolve.js n=100000 path='sibling' href='percent'                                                                                        -0.62 %   ±1.27%  ±1.69%  ±2.19%
url/url-resolve.js n=100000 path='foo/bar' href='percent'                                                                                        -0.76 %   ±0.91%  ±1.22%  ±1.58%
url/url-resolve.js n=100000 path='withscheme' href='percent'                                                                                     +0.00 %   ±1.07%  ±1.43%  ±1.86%
url/url-resolve.js n=100000 path='down' href='percent'                                                                                           -0.34 %   ±1.04%  ±1.39%  ±1.81%
url/url-resolve.js n=100000 path='up' href='dot'                                                                                                 -0.06 %   ±0.93%  ±1.23%  ±1.61%
url/url-resolve.js n=100000 path='sibling' href='dot'                                                                                            -0.14 %   ±1.25%  ±1.68%  ±2.20%
url/url-resolve.js n=100000 path='foo/bar' href='dot'                                                                                            +0.06 %   ±1.00%  ±1.33%  ±1.73%
url/url-resolve.js n=100000 path='withscheme' href='dot'                                                                                         -0.25 %   ±1.07%  ±1.42%  ±1.85%
url/url-resolve.js n=100000 path='down' href='dot'                                                                                               -0.67 %   ±0.93%  ±1.23%  ±1.61%
url/url-resolve.js n=100000 path='up' href='noscheme'                                                                                            +0.39 %   ±1.19%  ±1.59%  ±2.06%
url/url-resolve.js n=100000 path='sibling' href='noscheme'                                                                                       -1.00 %   ±1.14%  ±1.52%  ±1.98%
url/url-resolve.js n=100000 path='foo/bar' href='noscheme'                                                                                       -0.71 %   ±1.28%  ±1.70%  ±2.21%
url/url-resolve.js n=100000 path='withscheme' href='noscheme'                                                                                    -0.59 %   ±1.25%  ±1.66%  ±2.16%
url/url-resolve.js n=100000 path='down' href='noscheme'                                                                                          -0.68 %   ±1.40%  ±1.86%  ±2.42%
url/url-searchparams-append.js n=1000 type='URL'                                                                                                 -1.38 %   ±2.73%  ±3.64%  ±4.75%
url/url-searchparams-append.js n=1000000 type='URL'                                                                                              +1.24 %   ±1.38%  ±1.84%  ±2.39%
url/url-searchparams-append.js n=1000 type='URLSearchParams'                                                                                     -1.63 %   ±3.56%  ±4.74%  ±6.17%
url/url-searchparams-append.js n=1000000 type='URLSearchParams'                                                                                  -0.19 %   ±1.50%  ±2.00%  ±2.60%
url/url-searchparams-creation.js n=1000000 inputType='string' type='noencode'                                                                    -1.50 %   ±1.53%  ±2.04%  ±2.66%
url/url-searchparams-creation.js n=1000000 inputType='iterable' type='noencode'                                                                  +0.16 %   ±1.86%  ±2.47%  ±3.22%
url/url-searchparams-creation.js n=1000000 inputType='object' type='noencode'                                                                    +0.27 %   ±1.66%  ±2.22%  ±2.88%
url/url-searchparams-creation.js n=1000000 inputType='string' type='encodemany'                                                                  -0.11 %   ±1.68%  ±2.23%  ±2.91%
url/url-searchparams-creation.js n=1000000 inputType='iterable' type='encodemany'                                                                +0.53 %   ±1.97%  ±2.62%  ±3.41%
url/url-searchparams-creation.js n=1000000 inputType='object' type='encodemany'                                                                  +0.32 %   ±2.12%  ±2.83%  ±3.71%
url/url-searchparams-creation.js n=1000000 inputType='string' type='encodelast'                                                                  +0.32 %   ±1.57%  ±2.09%  ±2.72%
url/url-searchparams-creation.js n=1000000 inputType='iterable' type='encodelast'                                                                +0.04 %   ±1.95%  ±2.60%  ±3.38%
url/url-searchparams-creation.js n=1000000 inputType='object' type='encodelast'                                                                  -0.73 %   ±1.38%  ±1.83%  ±2.39%
url/url-searchparams-creation.js n=1000000 inputType='string' type='array'                                                                       +1.73 %   ±1.81%  ±2.40%  ±3.13%
url/url-searchparams-creation.js n=1000000 inputType='iterable' type='array'                                                                     +0.11 %   ±1.07%  ±1.43%  ±1.86%
url/url-searchparams-creation.js n=1000000 inputType='object' type='array'                                                                       +0.11 %   ±1.36%  ±1.82%  ±2.36%
url/url-searchparams-creation.js n=1000000 inputType='string' type='multiprimitives'                                                             +0.42 %   ±1.71%  ±2.28%  ±2.97%
url/url-searchparams-creation.js n=1000000 inputType='iterable' type='multiprimitives'                                             *             +2.43 %   ±1.98%  ±2.63%  ±3.43%
url/url-searchparams-creation.js n=1000000 inputType='object' type='multiprimitives'                                                             +0.64 %   ±1.54%  ±2.04%  ±2.66%
url/url-searchparams-inspect.js n=100000 kind='params' variant='empty'                                                                           +0.18 %   ±4.84%  ±6.44%  ±8.40%
url/url-searchparams-inspect.js n=100000 kind='iterator-keys' variant='empty'                                                                    -0.68 %   ±2.18%  ±2.90%  ±3.78%
url/url-searchparams-inspect.js n=100000 kind='iterator-values' variant='empty'                                                                  -1.52 %   ±2.04%  ±2.72%  ±3.54%
url/url-searchparams-inspect.js n=100000 kind='iterator-entries' variant='empty'                                                                 -1.77 %   ±2.06%  ±2.74%  ±3.57%
url/url-searchparams-inspect.js n=100000 kind='params' variant='small'                                                                           -0.15 %   ±0.85%  ±1.13%  ±1.47%
url/url-searchparams-inspect.js n=100000 kind='iterator-keys' variant='small'                                                                    +0.33 %   ±0.90%  ±1.20%  ±1.56%
url/url-searchparams-inspect.js n=100000 kind='iterator-values' variant='small'                                                                  +0.64 %   ±0.97%  ±1.28%  ±1.67%
url/url-searchparams-inspect.js n=100000 kind='iterator-entries' variant='small'                                                                 +0.02 %   ±0.71%  ±0.94%  ±1.23%
url/url-searchparams-inspect.js n=100000 kind='params' variant='medium'                                                                          +0.01 %   ±0.49%  ±0.65%  ±0.84%
url/url-searchparams-inspect.js n=100000 kind='iterator-keys' variant='medium'                                                                   +0.03 %   ±0.43%  ±0.57%  ±0.75%
url/url-searchparams-inspect.js n=100000 kind='iterator-values' variant='medium'                                                                 -0.22 %   ±0.58%  ±0.77%  ±1.00%
url/url-searchparams-inspect.js n=100000 kind='iterator-entries' variant='medium'                                                                +0.47 %   ±0.46%  ±0.62%  ±0.81%
url/url-searchparams-inspect.js n=100000 kind='params' variant='large'                                                                           -0.39 %   ±0.71%  ±0.95%  ±1.24%
url/url-searchparams-inspect.js n=100000 kind='iterator-keys' variant='large'                                                                    +0.29 %   ±0.75%  ±1.00%  ±1.30%
url/url-searchparams-inspect.js n=100000 kind='iterator-values' variant='large'                                                                  +0.06 %   ±0.76%  ±1.01%  ±1.31%
url/url-searchparams-inspect.js n=100000 kind='iterator-entries' variant='large'                                                                 -0.33 %   ±0.89%  ±1.18%  ±1.54%
url/url-searchparams-iteration.js n=1000000 loopMethod='forEach'                                                                                 -0.71 %   ±4.97%  ±6.61%  ±8.60%
url/url-searchparams-iteration.js n=1000000 loopMethod='iterator'                                                                                -0.26 %   ±1.86%  ±2.47%  ±3.21%
url/url-searchparams-iterator-consumers.js n=1000000 method='Array.from'                                                         ***            +20.97 %   ±1.50%  ±2.00%  ±2.62%
url/url-searchparams-iterator-consumers.js n=1000000 method='Map'                                                                ***            +35.69 %   ±1.49%  ±1.99%  ±2.60%
url/url-searchparams-iterator-consumers.js n=1000000 method='Object.fromEntries'                                                 ***            +17.29 %   ±1.13%  ±1.50%  ±1.97%
url/url-searchparams-iterator-consumers.js n=1000000 method='for-of'                                                                             +0.07 %   ±1.82%  ±2.42%  ±3.14%
url/url-searchparams-mutation.js n=10000 count=10 type='unique' method='set'                                                                    -19.24 %   ±22.01%  ±29.29%  ±38.14%
url/url-searchparams-mutation.js n=10000 count=1000 type='unique' method='set'                                                                   +0.89 %   ±2.70%  ±3.60%  ±4.68%
url/url-searchparams-mutation.js n=10000 count=10 type='duplicates' method='set'                                                                 -2.00 %   ±24.57%  ±32.69%  ±42.54%
url/url-searchparams-mutation.js n=10000 count=1000 type='duplicates' method='set'                                                               -0.37 %   ±1.25%  ±1.66%  ±2.16%
url/url-searchparams-mutation.js n=10000 count=10 type='unique' method='delete'                                                                  -4.06 %   ±23.83%  ±31.71%  ±41.28%
url/url-searchparams-mutation.js n=10000 count=1000 type='unique' method='delete'                                                                -0.31 %   ±1.90%  ±2.53%  ±3.30%
url/url-searchparams-mutation.js n=10000 count=10 type='duplicates' method='delete'                                                              -7.30 %   ±24.18%  ±32.17%  ±41.87%
url/url-searchparams-mutation.js n=10000 count=1000 type='duplicates' method='delete'                                                            -0.59 %   ±1.77%  ±2.36%  ±3.07%
url/url-searchparams-percent-scan.js encoding='valid' position='start' length=32 n=100000                                                        +1.93 %   ±3.04%  ±4.04%  ±5.26%
url/url-searchparams-percent-scan.js encoding='invalid' position='start' length=32 n=100000                                                      +0.81 %   ±5.53%  ±7.36%  ±9.58%
url/url-searchparams-percent-scan.js encoding='unicode' position='start' length=32 n=100000                                                      +1.37 %   ±3.25%  ±4.33%  ±5.63%
url/url-searchparams-percent-scan.js encoding='plain' position='start' length=32 n=100000                                                        -2.67 %   ±7.96%  ±10.59%  ±13.79%
url/url-searchparams-percent-scan.js encoding='valid' position='end' length=32 n=100000                                                          +2.10 %   ±3.14%  ±4.18%  ±5.45%
url/url-searchparams-percent-scan.js encoding='invalid' position='end' length=32 n=100000                                                        -1.11 %   ±4.96%  ±6.60%  ±8.60%
url/url-searchparams-percent-scan.js encoding='unicode' position='end' length=32 n=100000                                                        +1.35 %   ±3.23%  ±4.30%  ±5.59%
url/url-searchparams-percent-scan.js encoding='plain' position='end' length=32 n=100000                                                          +6.51 %   ±9.57%  ±12.73%  ±16.57%
url/url-searchparams-percent-scan.js encoding='valid' position='start' length=1024 n=100000                                                      -0.38 %   ±0.89%  ±1.19%  ±1.55%
url/url-searchparams-percent-scan.js encoding='invalid' position='start' length=1024 n=100000                                                    -2.12 %   ±5.81%  ±7.73%  ±10.06%
url/url-searchparams-percent-scan.js encoding='unicode' position='start' length=1024 n=100000                                                    +0.15 %   ±1.00%  ±1.33%  ±1.73%
url/url-searchparams-percent-scan.js encoding='plain' position='start' length=1024 n=100000                                                      -1.01 %   ±8.53%  ±11.35%  ±14.78%
url/url-searchparams-percent-scan.js encoding='valid' position='end' length=1024 n=100000                                                        -0.16 %   ±0.98%  ±1.31%  ±1.70%
url/url-searchparams-percent-scan.js encoding='invalid' position='end' length=1024 n=100000                                                      +1.66 %   ±5.27%  ±7.02%  ±9.14%
url/url-searchparams-percent-scan.js encoding='unicode' position='end' length=1024 n=100000                                                      +0.72 %   ±1.07%  ±1.43%  ±1.86%
url/url-searchparams-percent-scan.js encoding='plain' position='end' length=1024 n=100000                                                        +3.67 %   ±9.15%  ±12.17%  ±15.84%
url/url-searchparams-read.js n=20000000 param='one' accessMethod='get'                                                                           +0.53 %   ±1.47%  ±1.96%  ±2.55%
url/url-searchparams-read.js n=20000000 param='two' accessMethod='get'                                                                           -0.84 %   ±2.67%  ±3.56%  ±4.64%
url/url-searchparams-read.js n=20000000 param='three' accessMethod='get'                                                                         -1.45 %   ±1.70%  ±2.26%  ±2.94%
url/url-searchparams-read.js n=20000000 param='nonexistent' accessMethod='get'                                                                   +0.01 %   ±0.54%  ±0.72%  ±0.94%
url/url-searchparams-read.js n=20000000 param='one' accessMethod='getAll'                                                                        +0.02 %   ±1.53%  ±2.04%  ±2.66%
url/url-searchparams-read.js n=20000000 param='two' accessMethod='getAll'                                                                        +0.34 %   ±1.57%  ±2.09%  ±2.72%
url/url-searchparams-read.js n=20000000 param='three' accessMethod='getAll'                                                                      -0.33 %   ±1.82%  ±2.43%  ±3.16%
url/url-searchparams-read.js n=20000000 param='nonexistent' accessMethod='getAll'                                                  *             +0.61 %   ±0.60%  ±0.80%  ±1.05%
url/url-searchparams-read.js n=20000000 param='one' accessMethod='has'                                                                           +0.29 %   ±1.46%  ±1.96%  ±2.57%
url/url-searchparams-read.js n=20000000 param='two' accessMethod='has'                                                                           +0.04 %   ±1.97%  ±2.62%  ±3.41%
url/url-searchparams-read.js n=20000000 param='three' accessMethod='has'                                                                         -0.98 %   ±1.94%  ±2.59%  ±3.37%
url/url-searchparams-read.js n=20000000 param='nonexistent' accessMethod='has'                                                                   -0.26 %   ±0.54%  ±0.71%  ±0.93%
url/url-searchparams-sort-scaling.js order='sorted' size=49 n=10000                                                                              -0.99 %   ±7.88%  ±10.48%  ±13.65%
url/url-searchparams-sort-scaling.js order='reversed' size=49 n=10000                                                                            +0.02 %   ±0.75%  ±0.99%  ±1.30%
url/url-searchparams-sort-scaling.js order='shuffled' size=49 n=10000                                                                            +1.02 %   ±2.54%  ±3.38%  ±4.40%
url/url-searchparams-sort-scaling.js order='duplicates' size=49 n=10000                                                                          -1.82 %   ±2.27%  ±3.03%  ±3.95%
url/url-searchparams-sort-scaling.js order='sorted' size=50 n=10000                                                                              -1.65 %   ±4.98%  ±6.62%  ±8.62%
url/url-searchparams-sort-scaling.js order='reversed' size=50 n=10000                                                                            +2.71 %   ±3.82%  ±5.10%  ±6.67%
url/url-searchparams-sort-scaling.js order='shuffled' size=50 n=10000                                                                            -0.47 %   ±3.42%  ±4.55%  ±5.93%
url/url-searchparams-sort-scaling.js order='duplicates' size=50 n=10000                                                                          -0.46 %   ±3.42%  ±4.55%  ±5.93%
url/url-searchparams-sort-scaling.js order='sorted' size=65 n=10000                                                                *             +4.01 %   ±3.05%  ±4.06%  ±5.29%
url/url-searchparams-sort-scaling.js order='reversed' size=65 n=10000                                                                            +0.52 %   ±2.82%  ±3.75%  ±4.88%
url/url-searchparams-sort-scaling.js order='shuffled' size=65 n=10000                                                                            -1.44 %   ±1.65%  ±2.20%  ±2.87%
url/url-searchparams-sort-scaling.js order='duplicates' size=65 n=10000                                                                          +0.92 %   ±2.15%  ±2.86%  ±3.73%
url/url-searchparams-sort-scaling.js order='sorted' size=256 n=10000                                                                             -0.23 %   ±0.51%  ±0.67%  ±0.88%
url/url-searchparams-sort-scaling.js order='reversed' size=256 n=10000                                                                           -0.00 %   ±0.28%  ±0.37%  ±0.48%
url/url-searchparams-sort-scaling.js order='shuffled' size=256 n=10000                                                                           +0.22 %   ±0.39%  ±0.52%  ±0.67%
url/url-searchparams-sort-scaling.js order='duplicates' size=256 n=10000                                                                         +0.23 %   ±0.51%  ±0.67%  ±0.88%
url/url-searchparams-sort-scaling.js order='sorted' size=1024 n=10000                                                                            +0.05 %   ±0.28%  ±0.37%  ±0.48%
url/url-searchparams-sort-scaling.js order='reversed' size=1024 n=10000                                                                          +0.03 %   ±0.07%  ±0.09%  ±0.12%
url/url-searchparams-sort-scaling.js order='shuffled' size=1024 n=10000                                                                          -0.07 %   ±0.15%  ±0.20%  ±0.26%
url/url-searchparams-sort-scaling.js order='duplicates' size=1024 n=10000                                                                        -0.14 %   ±0.46%  ±0.61%  ±0.80%
url/url-searchparams-sort.js n=1000000 type='wpt'                                                                                                +1.74 %   ±3.16%  ±4.21%  ±5.48%
url/url-searchparams-sort.js n=1000000 type='empty'                                                                                              -1.02 %   ±4.56%  ±6.07%  ±7.90%
url/url-searchparams-sort.js n=1000000 type='sorted'                                                                                             -0.14 %   ±1.47%  ±1.96%  ±2.56%
url/url-searchparams-sort.js n=1000000 type='almostsorted'                                                                                       -1.01 %   ±1.13%  ±1.50%  ±1.95%
url/url-searchparams-sort.js n=1000000 type='reversed'                                                                             *             +0.56 %   ±0.49%  ±0.65%  ±0.85%
url/url-searchparams-sort.js n=1000000 type='random'                                                                                             +0.22 %   ±0.73%  ±0.97%  ±1.27%
url/url-searchparams-sort.js n=1000000 type='short'                                                                                              -0.48 %   ±1.19%  ±1.59%  ±2.07%
url/url-searchparams-sort.js n=1000000 type='long'                                                                                               +0.01 %   ±0.14%  ±0.19%  ±0.24%
url/url-searchparams-toString.js n=1000000 inputType='string' type='noencode'                                                                    -0.42 %   ±2.22%  ±2.98%  ±3.92%
url/url-searchparams-toString.js n=1000000 inputType='iterable' type='noencode'                                                                  +0.81 %   ±1.70%  ±2.26%  ±2.94%
url/url-searchparams-toString.js n=1000000 inputType='object' type='noencode'                                                                    +1.51 %   ±1.92%  ±2.56%  ±3.34%
url/url-searchparams-toString.js n=1000000 inputType='string' type='encodemany'                                                                  +0.72 %   ±2.47%  ±3.30%  ±4.32%
url/url-searchparams-toString.js n=1000000 inputType='iterable' type='encodemany'                                                                +0.38 %   ±2.04%  ±2.71%  ±3.53%
url/url-searchparams-toString.js n=1000000 inputType='object' type='encodemany'                                                    *             +2.60 %   ±2.25%  ±3.00%  ±3.91%
url/url-searchparams-toString.js n=1000000 inputType='string' type='encodelast'                                                                  -0.30 %   ±1.46%  ±1.95%  ±2.55%
url/url-searchparams-toString.js n=1000000 inputType='iterable' type='encodelast'                                                                +0.60 %   ±2.56%  ±3.41%  ±4.44%
url/url-searchparams-toString.js n=1000000 inputType='object' type='encodelast'                                                                  +1.13 %   ±2.36%  ±3.14%  ±4.09%
url/url-searchparams-toString.js n=1000000 inputType='string' type='array'                                                                       +1.66 %   ±2.05%  ±2.73%  ±3.55%
url/url-searchparams-toString.js n=1000000 inputType='iterable' type='array'                                                                     +0.59 %   ±1.75%  ±2.33%  ±3.05%
url/url-searchparams-toString.js n=1000000 inputType='object' type='array'                                                                       -0.52 %   ±2.32%  ±3.09%  ±4.03%
url/url-searchparams-toString.js n=1000000 inputType='string' type='multiprimitives'                                                             +0.98 %   ±2.40%  ±3.19%  ±4.15%
url/url-searchparams-toString.js n=1000000 inputType='iterable' type='multiprimitives'                                                           +3.05 %   ±4.71%  ±6.31%  ±8.32%
url/url-searchparams-toString.js n=1000000 inputType='object' type='multiprimitives'                                                             +1.71 %   ±2.44%  ±3.25%  ±4.23%
url/url-searchparams-update.js n=1000000 property='pathname' searchParams='true'                                                                 +0.25 %   ±1.12%  ±1.50%  ±1.96%
url/url-searchparams-update.js n=1000000 property='search' searchParams='true'                                                                   -0.35 %   ±0.65%  ±0.86%  ±1.12%
url/url-searchparams-update.js n=1000000 property='hash' searchParams='true'                                                                     +0.65 %   ±1.45%  ±1.93%  ±2.53%
url/url-searchparams-update.js n=1000000 property='pathname' searchParams='false'                                                                +0.06 %   ±0.92%  ±1.23%  ±1.60%
url/url-searchparams-update.js n=1000000 property='search' searchParams='false'                                                                  -0.70 %   ±1.02%  ±1.35%  ±1.77%
url/url-searchparams-update.js n=1000000 property='hash' searchParams='false'                                                     **             -1.97 %   ±1.36%  ±1.82%  ±2.39%
url/urlpattern-parse.js n=100000 pattern='"https://(sub.)?example(.com/)foo"'                                                                    -0.01 %   ±0.56%  ±0.75%  ±0.97%
url/urlpattern-parse.js n=100000 pattern='{"hostname":"xn--caf-dma.com"}'                                                                        -0.26 %   ±0.50%  ±0.67%  ±0.87%
url/urlpattern-parse.js n=100000 pattern='{"pathname":"/foo","search":"bar","hash":"baz","baseURL":"https://example.com:8080"}'                  -0.20 %   ±0.40%  ±0.53%  ±0.69%
url/urlpattern-parse.js n=100000 pattern='{"pathname":"/([[a-z]--a])"}'                                                            *             -0.71 %   ±0.68%  ±0.90%  ±1.18%
url/urlpattern-test.js n=100000 pattern='"https://(sub.)?example(.com/)foo"'                                                                     -0.64 %   ±3.03%  ±4.04%  ±5.25%
url/urlpattern-test.js n=100000 pattern='{"hostname":"xn--caf-dma.com"}'                                                                         -1.37 %   ±3.82%  ±5.08%  ±6.61%
url/urlpattern-test.js n=100000 pattern='{"pathname":"/foo","search":"bar","hash":"baz","baseURL":"https://example.com:8080"}'                   +1.65 %   ±3.91%  ±5.20%  ±6.77%
url/urlpattern-test.js n=100000 pattern='{"pathname":"/([[a-z]--a])"}'                                                                           +1.64 %   ±3.71%  ±4.94%  ±6.43%
url/whatwg-url-canParse.js n=1000000 type='long'                                                                                                 -1.39 %   ±1.96%  ±2.61%  ±3.41%
url/whatwg-url-canParse.js n=1000000 type='short'                                                                                                -2.37 %   ±2.50%  ±3.33%  ±4.34%
url/whatwg-url-canParse.js n=1000000 type='idn'                                                                                                  -0.10 %   ±0.29%  ±0.38%  ±0.50%
url/whatwg-url-canParse.js n=1000000 type='auth'                                                                                                 -0.43 %   ±1.04%  ±1.39%  ±1.81%
url/whatwg-url-canParse.js n=1000000 type='file'                                                                                                 -1.45 %   ±1.60%  ±2.13%  ±2.78%
url/whatwg-url-canParse.js n=1000000 type='ws'                                                                                                   -1.64 %   ±1.97%  ±2.62%  ±3.41%
url/whatwg-url-canParse.js n=1000000 type='javascript'                                                                                           +0.53 %   ±2.05%  ±2.73%  ±3.56%
url/whatwg-url-canParse.js n=1000000 type='percent'                                                                                              -0.39 %   ±0.58%  ±0.77%  ±1.00%
url/whatwg-url-canParse.js n=1000000 type='dot'                                                                                                  +0.93 %   ±3.26%  ±4.34%  ±5.66%
url/whatwg-url-get-prop.js e=1 type='long'                                                                                                       -0.91 %   ±2.98%  ±3.97%  ±5.18%
url/whatwg-url-get-prop.js e=1 type='short'                                                                                                      -1.10 %   ±2.94%  ±3.91%  ±5.09%
url/whatwg-url-get-prop.js e=1 type='idn'                                                                                         **             +9.16 %   ±6.11%  ±8.14%  ±10.61%
url/whatwg-url-get-prop.js e=1 type='auth'                                                                                                       -2.15 %   ±6.56%  ±8.79%  ±11.59%
url/whatwg-url-get-prop.js e=1 type='file'                                                                                                       +0.48 %   ±3.57%  ±4.75%  ±6.19%
url/whatwg-url-get-prop.js e=1 type='ws'                                                                                                         +0.54 %   ±2.75%  ±3.66%  ±4.77%
url/whatwg-url-get-prop.js e=1 type='javascript'                                                                                                 +1.18 %   ±4.43%  ±5.90%  ±7.68%
url/whatwg-url-get-prop.js e=1 type='percent'                                                                                                    +3.98 %   ±6.06%  ±8.06%  ±10.50%
url/whatwg-url-get-prop.js e=1 type='dot'                                                                                                        -0.13 %   ±3.07%  ±4.09%  ±5.32%
url/whatwg-url-get-prop.js e=1 type='wpt'                                                                                                        -3.11 %   ±7.23%  ±9.62%  ±12.52%
url/whatwg-url-idna.js n=5000000 to='ascii' domain='empty'                                                                                       +0.98 %   ±1.29%  ±1.72%  ±2.24%
url/whatwg-url-idna.js n=5000000 to='unicode' domain='empty'                                                                                     -1.08 %   ±1.24%  ±1.65%  ±2.16%
url/whatwg-url-idna.js n=5000000 to='ascii' domain='none'                                                                                        +0.09 %   ±0.31%  ±0.41%  ±0.53%
url/whatwg-url-idna.js n=5000000 to='unicode' domain='none'                                                                                      -0.02 %   ±0.27%  ±0.36%  ±0.47%
url/whatwg-url-idna.js n=5000000 to='ascii' domain='some'                                                                                        -0.00 %   ±0.25%  ±0.34%  ±0.44%
url/whatwg-url-idna.js n=5000000 to='unicode' domain='some'                                                                                      -0.12 %   ±0.26%  ±0.34%  ±0.45%
url/whatwg-url-idna.js n=5000000 to='ascii' domain='all'                                                                                         +0.24 %   ±0.31%  ±0.42%  ±0.55%
url/whatwg-url-idna.js n=5000000 to='unicode' domain='all'                                                                                       -0.04 %   ±0.20%  ±0.26%  ±0.34%
url/whatwg-url-idna.js n=5000000 to='ascii' domain='nonstring'                                                                                   +0.96 %   ±1.25%  ±1.66%  ±2.16%
url/whatwg-url-idna.js n=5000000 to='unicode' domain='nonstring'                                                                                 -0.41 %   ±1.24%  ±1.65%  ±2.14%
url/whatwg-url-parse.js e=1 type='long' withBase='true'                                                                            *             -3.09 %   ±2.77%  ±3.70%  ±4.86%
url/whatwg-url-parse.js e=1 type='short' withBase='true'                                                                                         +1.53 %   ±3.16%  ±4.20%  ±5.47%
url/whatwg-url-parse.js e=1 type='idn' withBase='true'                                                                                           -0.66 %   ±4.17%  ±5.54%  ±7.22%
url/whatwg-url-parse.js e=1 type='auth' withBase='true'                                                                                          +0.12 %   ±2.23%  ±2.97%  ±3.88%
url/whatwg-url-parse.js e=1 type='file' withBase='true'                                                                                          -1.44 %   ±3.18%  ±4.25%  ±5.55%
url/whatwg-url-parse.js e=1 type='ws' withBase='true'                                                                            ***             -4.54 %   ±2.50%  ±3.34%  ±4.37%
url/whatwg-url-parse.js e=1 type='javascript' withBase='true'                                                                                    -0.11 %   ±3.80%  ±5.08%  ±6.65%
url/whatwg-url-parse.js e=1 type='percent' withBase='true'                                                                                       -0.11 %   ±5.51%  ±7.33%  ±9.54%
url/whatwg-url-parse.js e=1 type='dot' withBase='true'                                                                                           -2.25 %   ±2.80%  ±3.72%  ±4.85%
url/whatwg-url-parse.js e=1 type='wpt' withBase='true'                                                                             *             -9.18 %   ±8.91%  ±11.89%  ±15.54%
url/whatwg-url-parse.js e=1 type='long' withBase='false'                                                                                         +0.95 %   ±3.75%  ±4.99%  ±6.50%
url/whatwg-url-parse.js e=1 type='short' withBase='false'                                                                                        +0.01 %   ±3.69%  ±4.90%  ±6.39%
url/whatwg-url-parse.js e=1 type='idn' withBase='false'                                                                                          -1.96 %   ±4.50%  ±5.99%  ±7.79%
url/whatwg-url-parse.js e=1 type='auth' withBase='false'                                                                                         -1.62 %   ±3.10%  ±4.13%  ±5.38%
url/whatwg-url-parse.js e=1 type='file' withBase='false'                                                                                         +0.63 %   ±3.07%  ±4.09%  ±5.32%
url/whatwg-url-parse.js e=1 type='ws' withBase='false'                                                                                           +0.89 %   ±3.31%  ±4.40%  ±5.73%
url/whatwg-url-parse.js e=1 type='javascript' withBase='false'                                                                                   -0.22 %   ±3.08%  ±4.09%  ±5.33%
url/whatwg-url-parse.js e=1 type='percent' withBase='false'                                                                                      +2.53 %   ±4.94%  ±6.57%  ±8.55%
url/whatwg-url-parse.js e=1 type='dot' withBase='false'                                                                                          +1.11 %   ±3.38%  ±4.50%  ±5.86%
url/whatwg-url-parse.js e=1 type='wpt' withBase='false'                                                                                         +20.52 %   ±34.57%  ±46.00%  ±59.87%
url/whatwg-url-properties.js prop='href' e=1 type='wpt' withBase='true'                                                                          +8.11 %   ±9.87%  ±13.14%  ±17.11%
url/whatwg-url-properties.js prop='origin' e=1 type='wpt' withBase='true'                                                                        -0.24 %   ±11.36%  ±15.12%  ±19.69%
url/whatwg-url-properties.js prop='protocol' e=1 type='wpt' withBase='true'                                                                      +3.04 %   ±11.71%  ±15.58%  ±20.29%
url/whatwg-url-properties.js prop='username' e=1 type='wpt' withBase='true'                                                                      -9.80 %   ±10.54%  ±14.04%  ±18.28%
url/whatwg-url-properties.js prop='password' e=1 type='wpt' withBase='true'                                                                      +1.95 %   ±10.69%  ±14.23%  ±18.52%
url/whatwg-url-properties.js prop='host' e=1 type='wpt' withBase='true'                                                                          +7.13 %   ±11.33%  ±15.07%  ±19.62%
url/whatwg-url-properties.js prop='hostname' e=1 type='wpt' withBase='true'                                                                      +2.87 %   ±12.46%  ±16.58%  ±21.58%
url/whatwg-url-properties.js prop='port' e=1 type='wpt' withBase='true'                                                                          -8.30 %   ±11.69%  ±15.56%  ±20.25%
url/whatwg-url-properties.js prop='pathname' e=1 type='wpt' withBase='true'                                                                      -5.48 %   ±11.91%  ±15.85%  ±20.63%
url/whatwg-url-properties.js prop='search' e=1 type='wpt' withBase='true'                                                                        +4.80 %   ±12.90%  ±17.17%  ±22.35%
url/whatwg-url-properties.js prop='searchParams' e=1 type='wpt' withBase='true'                                                                  -8.18 %   ±11.96%  ±15.92%  ±20.74%
url/whatwg-url-properties.js prop='hash' e=1 type='wpt' withBase='true'                                                                          -1.98 %   ±11.11%  ±14.78%  ±19.24%
url/whatwg-url-properties.js prop='href' e=1 type='wpt' withBase='false'                                                                         -6.06 %   ±10.77%  ±14.37%  ±18.78%
url/whatwg-url-properties.js prop='origin' e=1 type='wpt' withBase='false'                                                                       -1.72 %   ±12.26%  ±16.31%  ±21.23%
url/whatwg-url-properties.js prop='protocol' e=1 type='wpt' withBase='false'                                                                     -3.81 %   ±6.80%  ±9.05%  ±11.78%
url/whatwg-url-properties.js prop='username' e=1 type='wpt' withBase='false'                                                                     +1.68 %   ±9.56%  ±12.72%  ±16.57%
url/whatwg-url-properties.js prop='password' e=1 type='wpt' withBase='false'                                                                     -7.52 %   ±7.67%  ±10.21%  ±13.29%
url/whatwg-url-properties.js prop='host' e=1 type='wpt' withBase='false'                                                                         -1.92 %   ±7.87%  ±10.49%  ±13.66%
url/whatwg-url-properties.js prop='hostname' e=1 type='wpt' withBase='false'                                                                     -2.31 %   ±8.14%  ±10.85%  ±14.16%
url/whatwg-url-properties.js prop='port' e=1 type='wpt' withBase='false'                                                                         -1.80 %   ±9.02%  ±12.00%  ±15.64%
url/whatwg-url-properties.js prop='pathname' e=1 type='wpt' withBase='false'                                                                     +2.60 %   ±9.35%  ±12.46%  ±16.28%
url/whatwg-url-properties.js prop='search' e=1 type='wpt' withBase='false'                                                                       +2.22 %   ±9.90%  ±13.21%  ±17.25%
url/whatwg-url-properties.js prop='searchParams' e=1 type='wpt' withBase='false'                                                                 -0.05 %   ±7.88%  ±10.49%  ±13.66%
url/whatwg-url-properties.js prop='hash' e=1 type='wpt' withBase='false'                                                                         -6.17 %   ±7.77%  ±10.34%  ±13.46%
url/whatwg-url-to-and-from-path.js n=5000000 input='/dev/null' method='pathToFileURL'                                                            +0.30 %   ±0.75%  ±1.00%  ±1.30%
url/whatwg-url-to-and-from-path.js n=5000000 input='/dev/null?key=param&bool' method='pathToFileURL'                                             -0.72 %   ±1.17%  ±1.57%  ±2.08%
url/whatwg-url-to-and-from-path.js n=5000000 input='/dev/null?key=param&bool#hash' method='pathToFileURL'                                        -0.31 %   ±0.68%  ±0.90%  ±1.18%
url/whatwg-url-to-and-from-path.js n=5000000 input='file:///dev/null' method='pathToFileURL'                                                     -0.12 %   ±0.47%  ±0.62%  ±0.81%
url/whatwg-url-to-and-from-path.js n=5000000 input='file:///dev/null?key=param&bool' method='pathToFileURL'                                      -0.26 %   ±0.27%  ±0.36%  ±0.47%
url/whatwg-url-to-and-from-path.js n=5000000 input='file:///dev/null?key=param&bool#hash' method='pathToFileURL'                                 -0.00 %   ±0.79%  ±1.06%  ±1.37%
url/whatwg-url-to-and-from-path.js n=5000000 input='file:///dev/null' method='fileURLToPath'                                                     -0.06 %   ±1.10%  ±1.47%  ±1.93%
url/whatwg-url-to-and-from-path.js n=5000000 input='file:///dev/null?key=param&bool' method='fileURLToPath'                        *             -0.81 %   ±0.80%  ±1.06%  ±1.38%
url/whatwg-url-to-and-from-path.js n=5000000 input='file:///dev/null?key=param&bool#hash' method='fileURLToPath'                                 +0.20 %   ±1.06%  ±1.41%  ±1.83%
url/whatwg-url-validity.js e=100000 type='valid'                                                                                                 +2.57 %   ±7.46%  ±9.93%  ±12.92%
url/whatwg-url-validity.js e=100000 type='invalid'                                                                                               +0.23 %   ±1.00%  ±1.33%  ±1.73%

                                                                                                                                    -55.1%             0%             +55.1%
url/legacy-url-get-prop.js e=1 type='long'                                                                                                      ░░░▓▓|                     -5.56% 
url/legacy-url-get-prop.js e=1 type='short'                                                                                                        ░░|░                    +0.35% 
url/legacy-url-get-prop.js e=1 type='idn'                                                                                                         ░░▓|                     -2.82% 
url/legacy-url-get-prop.js e=1 type='auth'                                                                                                        ░░░|░                    -1.15% 
url/legacy-url-get-prop.js e=1 type='file'                                                                                                       ░░▓▓|                     -5.53% 
url/legacy-url-get-prop.js e=1 type='ws'                                                                                                           ░░|░░                   +0.68% 
url/legacy-url-get-prop.js e=1 type='javascript'                                                                                                  ░██|                     -4.33% *
url/legacy-url-get-prop.js e=1 type='percent'                                                                                                      ░░|░                    +0.18% 
url/legacy-url-get-prop.js e=1 type='dot'                                                                                                          ░░|                     -0.96% 
url/legacy-url-get-prop.js e=1 type='wpt'                                                                                                        ░░░░|░░░░                 +2.39% 
url/legacy-url-parse.js e=1 type='long'                                                                                                            ░░|░                    +0.00% 
url/legacy-url-parse.js e=1 type='short'                                                                                                           ░░|                     -1.23% 
url/legacy-url-parse.js e=1 type='idn'                                                                                                          ░░░▓▓|                     -6.23% 
url/legacy-url-parse.js e=1 type='auth'                                                                                                             ▓|                     -1.63% 
url/legacy-url-parse.js e=1 type='file'                                                                                                            ░▓|                     -2.55% 
url/legacy-url-parse.js e=1 type='ws'                                                                                                              ░▓|                     -2.43% 
url/legacy-url-parse.js e=1 type='javascript'                                                                                                       ░|                     +0.23% 
url/legacy-url-parse.js e=1 type='percent'                                                                                                          ░|                     +0.40% 
url/legacy-url-parse.js e=1 type='dot'                                                                                                              ░|░                    +1.55% 
url/legacy-url-parse.js e=1 type='wpt'                                                                                                   ░░░░░███████|                     -19.11% *
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='legacy' searchParam='noencode'                                                      |                     +0.54% 
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='whatwg' searchParam='noencode'                                                     ░|                     -0.14% 
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='legacy' searchParam='multicharsep'                                                 ░|                     -1.09% 
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='whatwg' searchParam='multicharsep'                                                 ░|                     -0.44% 
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='legacy' searchParam='encodefake'                                                    |                     +0.22% 
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='whatwg' searchParam='encodefake'                                                    |                     +0.21% 
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='legacy' searchParam='encodemany'                                                    |                     -0.12% 
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='whatwg' searchParam='encodemany'                                                    |                     -0.07% 
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='legacy' searchParam='encodelast'                                                    |                     -0.24% 
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='whatwg' searchParam='encodelast'                                                    |                     -0.40% 
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='legacy' searchParam='multivalue'                                                    |                     -0.44% 
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='whatwg' searchParam='multivalue'                                                    |                     +0.40% 
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='legacy' searchParam='multivaluemany'                                               ░|                     -0.46% 
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='whatwg' searchParam='multivaluemany'                                                |                     -0.05% 
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='legacy' searchParam='manypairs'                                                     |                     +0.54% 
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='whatwg' searchParam='manypairs'                                                    ░|                     -0.24% 
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='legacy' searchParam='manyblankpairs'                                               ░|                     -0.42% 
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='whatwg' searchParam='manyblankpairs'                                               ░|                     -0.74% 
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='legacy' searchParam='altspaces'                                                     |                     -0.01% 
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='whatwg' searchParam='altspaces'                                                     |                     -0.45% 
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='legacy' searchParam='noencode'                                                 ░|                     -0.67% 
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='whatwg' searchParam='noencode'                                                 ░|░░                   +2.35% 
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='legacy' searchParam='multicharsep'                                             ▓|                     -1.64% 
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='whatwg' searchParam='multicharsep'                                           ░░█|                     -3.94% *
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='legacy' searchParam='encodefake'                                                |                     -0.20% 
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='whatwg' searchParam='encodefake'                                               ░|                     +0.06% 
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='legacy' searchParam='encodemany'                                                |                     +0.07% 
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='whatwg' searchParam='encodemany'                                               ░|                     +0.30% 
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='legacy' searchParam='encodelast'                                               ░|                     -0.53% 
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='whatwg' searchParam='encodelast'                                               ░|░                    +0.59% 
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='legacy' searchParam='multivalue'                                                |                     -0.07% 
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='whatwg' searchParam='multivalue'                                              ░░|                     -0.91% 
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='legacy' searchParam='multivaluemany'                                            |                     +0.91% 
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='whatwg' searchParam='multivaluemany'                                          ░░|                     -0.83% 
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='legacy' searchParam='manypairs'                                                ░|                     +0.15% 
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='whatwg' searchParam='manypairs'                                                ░|                     -0.62% 
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='legacy' searchParam='manyblankpairs'                                         ░░▓|                     -1.52% 
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='whatwg' searchParam='manyblankpairs'                                          ░░|                     -0.58% 
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='legacy' searchParam='altspaces'                                                 |                     +0.59% 
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='whatwg' searchParam='altspaces'                                               ░░|░                    +1.28% 
url/legacy-vs-whatwg-url-serialize.js e=1 method='legacy' type='long'                                                                             ░░▓|                     -3.04% 
url/legacy-vs-whatwg-url-serialize.js e=1 method='whatwg' type='long'                                                                               ░|                     +0.03% 
url/legacy-vs-whatwg-url-serialize.js e=1 method='legacy' type='short'                                                                              ░|░                    +0.91% 
url/legacy-vs-whatwg-url-serialize.js e=1 method='whatwg' type='short'                                                                               |░░                   +4.00% 
url/legacy-vs-whatwg-url-serialize.js e=1 method='legacy' type='idn'                                                                              ░░░|░                    -1.07% 
url/legacy-vs-whatwg-url-serialize.js e=1 method='whatwg' type='idn'                                                                               ░░|░░                   +0.45% 
url/legacy-vs-whatwg-url-serialize.js e=1 method='legacy' type='auth'                                                                             ░░▓|                     -2.98% 
url/legacy-vs-whatwg-url-serialize.js e=1 method='whatwg' type='auth'                                                                               ░|                     -1.22% 
url/legacy-vs-whatwg-url-serialize.js e=1 method='legacy' type='file'                                                                                |░░                   +3.98% 
url/legacy-vs-whatwg-url-serialize.js e=1 method='whatwg' type='file'                                                                              ░▓|                     -2.81% 
url/legacy-vs-whatwg-url-serialize.js e=1 method='legacy' type='ws'                                                                               ░░█|                     -4.02% **
url/legacy-vs-whatwg-url-serialize.js e=1 method='whatwg' type='ws'                                                                               ░░▓|                     -3.57% 
url/legacy-vs-whatwg-url-serialize.js e=1 method='legacy' type='javascript'                                                                         ░|                     -1.28% 
url/legacy-vs-whatwg-url-serialize.js e=1 method='whatwg' type='javascript'                                                                       ░░▓|                     -3.66% 
url/legacy-vs-whatwg-url-serialize.js e=1 method='legacy' type='percent'                                                                           ░░|                     -1.04% 
url/legacy-vs-whatwg-url-serialize.js e=1 method='whatwg' type='percent'                                                                          ░░▓|                     -1.53% 
url/legacy-vs-whatwg-url-serialize.js e=1 method='legacy' type='dot'                                                                                ░|░                    +1.52% 
url/legacy-vs-whatwg-url-serialize.js e=1 method='whatwg' type='dot'                                                                               ░░|                     -0.62% 
url/legacy-vs-whatwg-url-serialize.js e=1 method='legacy' type='wpt'                                                                               ░░|                     -0.62% 
url/legacy-vs-whatwg-url-serialize.js e=1 method='whatwg' type='wpt'                                                                                ░|                     +0.70% 
url/url-format.js n=25000000 type='slashes'                                                                                                         ░|                     -0.31% 
url/url-format.js n=25000000 type='file'                                                                                                            ░|                     -1.23% *
url/url-parse.js n=10000000 type='normal'                                                                                                            |                     +0.64% 
url/url-parse.js n=10000000 type='escaped'                                                                                                           |                     -0.39% 
url/url-resolve.js n=100000 path='up' href='long'                                                                                                    |                     +0.08% 
url/url-resolve.js n=100000 path='sibling' href='long'                                                                                               |                     -0.15% 
url/url-resolve.js n=100000 path='foo/bar' href='long'                                                                                               |                     +0.03% 
url/url-resolve.js n=100000 path='withscheme' href='long'                                                                                            |                     -0.02% 
url/url-resolve.js n=100000 path='down' href='long'                                                                                                  |                     +0.25% 
url/url-resolve.js n=100000 path='up' href='short'                                                                                                  ░|                     -0.48% 
url/url-resolve.js n=100000 path='sibling' href='short'                                                                                              |                     +0.31% 
url/url-resolve.js n=100000 path='foo/bar' href='short'                                                                                              |                     +0.52% 
url/url-resolve.js n=100000 path='withscheme' href='short'                                                                                           |                     +0.89% 
url/url-resolve.js n=100000 path='down' href='short'                                                                                                 |                     +0.31% 
url/url-resolve.js n=100000 path='up' href='idn'                                                                                                    ░|                     -0.42% 
url/url-resolve.js n=100000 path='sibling' href='idn'                                                                                                |                     -0.07% 
url/url-resolve.js n=100000 path='foo/bar' href='idn'                                                                                                |                     +0.82% 
url/url-resolve.js n=100000 path='withscheme' href='idn'                                                                                             |                     -0.08% 
url/url-resolve.js n=100000 path='down' href='idn'                                                                                                   |                     +0.04% 
url/url-resolve.js n=100000 path='up' href='auth'                                                                                                    |                     +0.64% 
url/url-resolve.js n=100000 path='sibling' href='auth'                                                                                               |                     +0.33% 
url/url-resolve.js n=100000 path='foo/bar' href='auth'                                                                                               |                     +0.48% 
url/url-resolve.js n=100000 path='withscheme' href='auth'                                                                                           ░|                     -0.86% 
url/url-resolve.js n=100000 path='down' href='auth'                                                                                                  |                     -0.50% 
url/url-resolve.js n=100000 path='up' href='file'                                                                                                    |                     +0.65% 
url/url-resolve.js n=100000 path='sibling' href='file'                                                                                               |                     +1.25% 
url/url-resolve.js n=100000 path='foo/bar' href='file'                                                                                               |                     -0.26% 
url/url-resolve.js n=100000 path='withscheme' href='file'                                                                                            |                     +0.02% 
url/url-resolve.js n=100000 path='down' href='file'                                                                                                 ░|                     -0.74% 
url/url-resolve.js n=100000 path='up' href='ws'                                                                                                      |                     +0.10% 
url/url-resolve.js n=100000 path='sibling' href='ws'                                                                                                 |                     +0.07% 
url/url-resolve.js n=100000 path='foo/bar' href='ws'                                                                                                 |                     +0.02% 
url/url-resolve.js n=100000 path='withscheme' href='ws'                                                                                              |                     +0.08% 
url/url-resolve.js n=100000 path='down' href='ws'                                                                                                    |                     +0.14% 
url/url-resolve.js n=100000 path='up' href='javascript'                                                                                             █|                     -1.47% *
url/url-resolve.js n=100000 path='sibling' href='javascript'                                                                                         |                     +0.39% 
url/url-resolve.js n=100000 path='foo/bar' href='javascript'                                                                                        ░|                     -0.55% 
url/url-resolve.js n=100000 path='withscheme' href='javascript'                                                                                     ░|                     -0.27% 
url/url-resolve.js n=100000 path='down' href='javascript'                                                                                            |                     +0.48% 
url/url-resolve.js n=100000 path='up' href='percent'                                                                                                 |                     +0.08% 
url/url-resolve.js n=100000 path='sibling' href='percent'                                                                                           ░|                     -0.62% 
url/url-resolve.js n=100000 path='foo/bar' href='percent'                                                                                           ░|                     -0.76% 
url/url-resolve.js n=100000 path='withscheme' href='percent'                                                                                         |                     +0.00% 
url/url-resolve.js n=100000 path='down' href='percent'                                                                                              ░|                     -0.34% 
url/url-resolve.js n=100000 path='up' href='dot'                                                                                                     |                     -0.06% 
url/url-resolve.js n=100000 path='sibling' href='dot'                                                                                               ░|                     -0.14% 
url/url-resolve.js n=100000 path='foo/bar' href='dot'                                                                                                |                     +0.06% 
url/url-resolve.js n=100000 path='withscheme' href='dot'                                                                                             |                     -0.25% 
url/url-resolve.js n=100000 path='down' href='dot'                                                                                                  ░|                     -0.67% 
url/url-resolve.js n=100000 path='up' href='noscheme'                                                                                                |                     +0.39% 
url/url-resolve.js n=100000 path='sibling' href='noscheme'                                                                                          ░|                     -1.00% 
url/url-resolve.js n=100000 path='foo/bar' href='noscheme'                                                                                          ░|                     -0.71% 
url/url-resolve.js n=100000 path='withscheme' href='noscheme'                                                                                       ░|                     -0.59% 
url/url-resolve.js n=100000 path='down' href='noscheme'                                                                                             ░|                     -0.68% 
url/url-searchparams-append.js n=1000 type='URL'                                                                                                    ▓|                     -1.38% 
url/url-searchparams-append.js n=1000000 type='URL'                                                                                                  |                     +1.24% 
url/url-searchparams-append.js n=1000 type='URLSearchParams'                                                                                       ░▓|                     -1.63% 
url/url-searchparams-append.js n=1000000 type='URLSearchParams'                                                                                     ░|                     -0.19% 
url/url-searchparams-creation.js n=1000000 inputType='string' type='noencode'                                                                       ▓|                     -1.50% 
url/url-searchparams-creation.js n=1000000 inputType='iterable' type='noencode'                                                                     ░|                     +0.16% 
url/url-searchparams-creation.js n=1000000 inputType='object' type='noencode'                                                                       ░|                     +0.27% 
url/url-searchparams-creation.js n=1000000 inputType='string' type='encodemany'                                                                     ░|                     -0.11% 
url/url-searchparams-creation.js n=1000000 inputType='iterable' type='encodemany'                                                                   ░|                     +0.53% 
url/url-searchparams-creation.js n=1000000 inputType='object' type='encodemany'                                                                     ░|                     +0.32% 
url/url-searchparams-creation.js n=1000000 inputType='string' type='encodelast'                                                                      |                     +0.32% 
url/url-searchparams-creation.js n=1000000 inputType='iterable' type='encodelast'                                                                   ░|                     +0.04% 
url/url-searchparams-creation.js n=1000000 inputType='object' type='encodelast'                                                                     ░|                     -0.73% 
url/url-searchparams-creation.js n=1000000 inputType='string' type='array'                                                                           |                     +1.73% 
url/url-searchparams-creation.js n=1000000 inputType='iterable' type='array'                                                                         |                     +0.11% 
url/url-searchparams-creation.js n=1000000 inputType='object' type='array'                                                                           |                     +0.11% 
url/url-searchparams-creation.js n=1000000 inputType='string' type='multiprimitives'                                                                 |                     +0.42% 
url/url-searchparams-creation.js n=1000000 inputType='iterable' type='multiprimitives'                                                               |░                    +2.43% *
url/url-searchparams-creation.js n=1000000 inputType='object' type='multiprimitives'                                                                 |                     +0.64% 
url/url-searchparams-inspect.js n=100000 kind='params' variant='empty'                                                                             ░░|░                    +0.18% 
url/url-searchparams-inspect.js n=100000 kind='iterator-keys' variant='empty'                                                                       ░|                     -0.68% 
url/url-searchparams-inspect.js n=100000 kind='iterator-values' variant='empty'                                                                     ▓|                     -1.52% 
url/url-searchparams-inspect.js n=100000 kind='iterator-entries' variant='empty'                                                                    ▓|                     -1.77% 
url/url-searchparams-inspect.js n=100000 kind='params' variant='small'                                                                               |                     -0.15% 
url/url-searchparams-inspect.js n=100000 kind='iterator-keys' variant='small'                                                                        |                     +0.33% 
url/url-searchparams-inspect.js n=100000 kind='iterator-values' variant='small'                                                                      |                     +0.64% 
url/url-searchparams-inspect.js n=100000 kind='iterator-entries' variant='small'                                                                     |                     +0.02% 
url/url-searchparams-inspect.js n=100000 kind='params' variant='medium'                                                                              |                     +0.01% 
url/url-searchparams-inspect.js n=100000 kind='iterator-keys' variant='medium'                                                                       |                     +0.03% 
url/url-searchparams-inspect.js n=100000 kind='iterator-values' variant='medium'                                                                     |                     -0.22% 
url/url-searchparams-inspect.js n=100000 kind='iterator-entries' variant='medium'                                                                    |                     +0.47% 
url/url-searchparams-inspect.js n=100000 kind='params' variant='large'                                                                               |                     -0.39% 
url/url-searchparams-inspect.js n=100000 kind='iterator-keys' variant='large'                                                                        |                     +0.29% 
url/url-searchparams-inspect.js n=100000 kind='iterator-values' variant='large'                                                                      |                     +0.06% 
url/url-searchparams-inspect.js n=100000 kind='iterator-entries' variant='large'                                                                     |                     -0.33% 
url/url-searchparams-iteration.js n=1000000 loopMethod='forEach'                                                                                   ░░|░                    -0.71% 
url/url-searchparams-iteration.js n=1000000 loopMethod='iterator'                                                                                   ░|                     -0.26% 
url/url-searchparams-iterator-consumers.js n=1000000 method='Array.from'                                                                             |███████              +20.97% ***
url/url-searchparams-iterator-consumers.js n=1000000 method='Map'                                                                                    |████████████░        +35.69% ***
url/url-searchparams-iterator-consumers.js n=1000000 method='Object.fromEntries'                                                                     |█████░               +17.29% ***
url/url-searchparams-iterator-consumers.js n=1000000 method='for-of'                                                                                ░|                     +0.07% 
url/url-searchparams-mutation.js n=10000 count=10 type='unique' method='set'                                                          ░░░░░░░░▓▓▓▓▓▓▓|                     -19.24% 
url/url-searchparams-mutation.js n=10000 count=1000 type='unique' method='set'                                                                      ░|                     +0.89% 
url/url-searchparams-mutation.js n=10000 count=10 type='duplicates' method='set'                                                           ░░░░░░░░░▓|░░░░░░░              -2.00% 
url/url-searchparams-mutation.js n=10000 count=1000 type='duplicates' method='set'                                                                  ░|                     -0.37% 
url/url-searchparams-mutation.js n=10000 count=10 type='unique' method='delete'                                                            ░░░░░░░░░▓|░░░░░░               -4.06% 
url/url-searchparams-mutation.js n=10000 count=1000 type='unique' method='delete'                                                                   ░|                     -0.31% 
url/url-searchparams-mutation.js n=10000 count=10 type='duplicates' method='delete'                                                       ░░░░░░░░▓▓▓|░░░░░                -7.30% 
url/url-searchparams-mutation.js n=10000 count=1000 type='duplicates' method='delete'                                                               ░|                     -0.59% 
url/url-searchparams-percent-scan.js encoding='valid' position='start' length=32 n=100000                                                            |░                    +1.93% 
url/url-searchparams-percent-scan.js encoding='invalid' position='start' length=32 n=100000                                                        ░░|░                    +0.81% 
url/url-searchparams-percent-scan.js encoding='unicode' position='start' length=32 n=100000                                                         ░|░                    +1.37% 
url/url-searchparams-percent-scan.js encoding='plain' position='start' length=32 n=100000                                                        ░░░▓|░                    -2.67% 
url/url-searchparams-percent-scan.js encoding='valid' position='end' length=32 n=100000                                                              |░                    +2.10% 
url/url-searchparams-percent-scan.js encoding='invalid' position='end' length=32 n=100000                                                          ░░|                     -1.11% 
url/url-searchparams-percent-scan.js encoding='unicode' position='end' length=32 n=100000                                                           ░|░                    +1.35% 
url/url-searchparams-percent-scan.js encoding='plain' position='end' length=32 n=100000                                                             ░|▓░░░░                +6.51% 
url/url-searchparams-percent-scan.js encoding='valid' position='start' length=1024 n=100000                                                          |                     -0.38% 
url/url-searchparams-percent-scan.js encoding='invalid' position='start' length=1024 n=100000                                                     ░░▓|                     -2.12% 
url/url-searchparams-percent-scan.js encoding='unicode' position='start' length=1024 n=100000                                                        |                     +0.15% 
url/url-searchparams-percent-scan.js encoding='plain' position='start' length=1024 n=100000                                                       ░░░|░░                   -1.01% 
url/url-searchparams-percent-scan.js encoding='valid' position='end' length=1024 n=100000                                                            |                     -0.16% 
url/url-searchparams-percent-scan.js encoding='invalid' position='end' length=1024 n=100000                                                         ░|░░                   +1.66% 
url/url-searchparams-percent-scan.js encoding='unicode' position='end' length=1024 n=100000                                                          |                     +0.72% 
url/url-searchparams-percent-scan.js encoding='plain' position='end' length=1024 n=100000                                                          ░░|░░░░                 +3.67% 
url/url-searchparams-read.js n=20000000 param='one' accessMethod='get'                                                                               |                     +0.53% 
url/url-searchparams-read.js n=20000000 param='two' accessMethod='get'                                                                              ░|                     -0.84% 
url/url-searchparams-read.js n=20000000 param='three' accessMethod='get'                                                                            ▓|                     -1.45% 
url/url-searchparams-read.js n=20000000 param='nonexistent' accessMethod='get'                                                                       |                     +0.01% 
url/url-searchparams-read.js n=20000000 param='one' accessMethod='getAll'                                                                           ░|                     +0.02% 
url/url-searchparams-read.js n=20000000 param='two' accessMethod='getAll'                                                                            |                     +0.34% 
url/url-searchparams-read.js n=20000000 param='three' accessMethod='getAll'                                                                         ░|                     -0.33% 
url/url-searchparams-read.js n=20000000 param='nonexistent' accessMethod='getAll'                                                                    |                     +0.61% *
url/url-searchparams-read.js n=20000000 param='one' accessMethod='has'                                                                               |                     +0.29% 
url/url-searchparams-read.js n=20000000 param='two' accessMethod='has'                                                                              ░|                     +0.04% 
url/url-searchparams-read.js n=20000000 param='three' accessMethod='has'                                                                            ░|                     -0.98% 
url/url-searchparams-read.js n=20000000 param='nonexistent' accessMethod='has'                                                                       |                     -0.26% 
url/url-searchparams-sort-scaling.js order='sorted' size=49 n=10000                                                                               ░░░|░░                   -0.99% 
url/url-searchparams-sort-scaling.js order='reversed' size=49 n=10000                                                                                |                     +0.02% 
url/url-searchparams-sort-scaling.js order='shuffled' size=49 n=10000                                                                               ░|                     +1.02% 
url/url-searchparams-sort-scaling.js order='duplicates' size=49 n=10000                                                                             ▓|                     -1.82% 
url/url-searchparams-sort-scaling.js order='sorted' size=50 n=10000                                                                                ░▓|                     -1.65% 
url/url-searchparams-sort-scaling.js order='reversed' size=50 n=10000                                                                                |░                    +2.71% 
url/url-searchparams-sort-scaling.js order='shuffled' size=50 n=10000                                                                               ░|                     -0.47% 
url/url-searchparams-sort-scaling.js order='duplicates' size=50 n=10000                                                                             ░|                     -0.46% 
url/url-searchparams-sort-scaling.js order='sorted' size=65 n=10000                                                                                  |░░                   +4.01% *
url/url-searchparams-sort-scaling.js order='reversed' size=65 n=10000                                                                               ░|                     +0.52% 
url/url-searchparams-sort-scaling.js order='shuffled' size=65 n=10000                                                                               ▓|                     -1.44% 
url/url-searchparams-sort-scaling.js order='duplicates' size=65 n=10000                                                                              |                     +0.92% 
url/url-searchparams-sort-scaling.js order='sorted' size=256 n=10000                                                                                 |                     -0.23% 
url/url-searchparams-sort-scaling.js order='reversed' size=256 n=10000                                                                               |                     -0.00% 
url/url-searchparams-sort-scaling.js order='shuffled' size=256 n=10000                                                                               |                     +0.22% 
url/url-searchparams-sort-scaling.js order='duplicates' size=256 n=10000                                                                             |                     +0.23% 
url/url-searchparams-sort-scaling.js order='sorted' size=1024 n=10000                                                                                |                     +0.05% 
url/url-searchparams-sort-scaling.js order='reversed' size=1024 n=10000                                                                              |                     +0.03% 
url/url-searchparams-sort-scaling.js order='shuffled' size=1024 n=10000                                                                              |                     -0.07% 
url/url-searchparams-sort-scaling.js order='duplicates' size=1024 n=10000                                                                            |                     -0.14% 
url/url-searchparams-sort.js n=1000000 type='wpt'                                                                                                   ░|░                    +1.74% 
url/url-searchparams-sort.js n=1000000 type='empty'                                                                                                ░░|                     -1.02% 
url/url-searchparams-sort.js n=1000000 type='sorted'                                                                                                ░|                     -0.14% 
url/url-searchparams-sort.js n=1000000 type='almostsorted'                                                                                          ░|                     -1.01% 
url/url-searchparams-sort.js n=1000000 type='reversed'                                                                                               |                     +0.56% *
url/url-searchparams-sort.js n=1000000 type='random'                                                                                                 |                     +0.22% 
url/url-searchparams-sort.js n=1000000 type='short'                                                                                                 ░|                     -0.48% 
url/url-searchparams-sort.js n=1000000 type='long'                                                                                                   |                     +0.01% 
url/url-searchparams-toString.js n=1000000 inputType='string' type='noencode'                                                                       ░|                     -0.42% 
url/url-searchparams-toString.js n=1000000 inputType='iterable' type='noencode'                                                                      |                     +0.81% 
url/url-searchparams-toString.js n=1000000 inputType='object' type='noencode'                                                                        |                     +1.51% 
url/url-searchparams-toString.js n=1000000 inputType='string' type='encodemany'                                                                     ░|                     +0.72% 
url/url-searchparams-toString.js n=1000000 inputType='iterable' type='encodemany'                                                                   ░|                     +0.38% 
url/url-searchparams-toString.js n=1000000 inputType='object' type='encodemany'                                                                      |░                    +2.60% *
url/url-searchparams-toString.js n=1000000 inputType='string' type='encodelast'                                                                     ░|                     -0.30% 
url/url-searchparams-toString.js n=1000000 inputType='iterable' type='encodelast'                                                                   ░|                     +0.60% 
url/url-searchparams-toString.js n=1000000 inputType='object' type='encodelast'                                                                      |                     +1.13% 
url/url-searchparams-toString.js n=1000000 inputType='string' type='array'                                                                           |                     +1.66% 
url/url-searchparams-toString.js n=1000000 inputType='iterable' type='array'                                                                         |                     +0.59% 
url/url-searchparams-toString.js n=1000000 inputType='object' type='array'                                                                          ░|                     -0.52% 
url/url-searchparams-toString.js n=1000000 inputType='string' type='multiprimitives'                                                                ░|                     +0.98% 
url/url-searchparams-toString.js n=1000000 inputType='iterable' type='multiprimitives'                                                              ░|░░                   +3.05% 
url/url-searchparams-toString.js n=1000000 inputType='object' type='multiprimitives'                                                                 |░                    +1.71% 
url/url-searchparams-update.js n=1000000 property='pathname' searchParams='true'                                                                     |                     +0.25% 
url/url-searchparams-update.js n=1000000 property='search' searchParams='true'                                                                       |                     -0.35% 
url/url-searchparams-update.js n=1000000 property='hash' searchParams='true'                                                                         |                     +0.65% 
url/url-searchparams-update.js n=1000000 property='pathname' searchParams='false'                                                                    |                     +0.06% 
url/url-searchparams-update.js n=1000000 property='search' searchParams='false'                                                                     ░|                     -0.70% 
url/url-searchparams-update.js n=1000000 property='hash' searchParams='false'                                                                       █|                     -1.97% **
url/urlpattern-parse.js n=100000 pattern='"https://(sub.)?example(.com/)foo"'                                                                        |                     -0.01% 
url/urlpattern-parse.js n=100000 pattern='{"hostname":"xn--caf-dma.com"}'                                                                            |                     -0.26% 
url/urlpattern-parse.js n=100000 pattern='{"pathname":"/foo","search":"bar","hash":"baz","baseURL":"https://example.com:8080"}'                      |                     -0.20% 
url/urlpattern-parse.js n=100000 pattern='{"pathname":"/([[a-z]--a])"}'                                                                             ░|                     -0.71% *
url/urlpattern-test.js n=100000 pattern='"https://(sub.)?example(.com/)foo"'                                                                        ░|                     -0.64% 
url/urlpattern-test.js n=100000 pattern='{"hostname":"xn--caf-dma.com"}'                                                                           ░░|                     -1.37% 
url/urlpattern-test.js n=100000 pattern='{"pathname":"/foo","search":"bar","hash":"baz","baseURL":"https://example.com:8080"}'                      ░|░                    +1.65% 
url/urlpattern-test.js n=100000 pattern='{"pathname":"/([[a-z]--a])"}'                                                                              ░|░                    +1.64% 
url/whatwg-url-canParse.js n=1000000 type='long'                                                                                                    ▓|                     -1.39% 
url/whatwg-url-canParse.js n=1000000 type='short'                                                                                                  ░▓|                     -2.37% 
url/whatwg-url-canParse.js n=1000000 type='idn'                                                                                                      |                     -0.10% 
url/whatwg-url-canParse.js n=1000000 type='auth'                                                                                                    ░|                     -0.43% 
url/whatwg-url-canParse.js n=1000000 type='file'                                                                                                    ▓|                     -1.45% 
url/whatwg-url-canParse.js n=1000000 type='ws'                                                                                                      ▓|                     -1.64% 
url/whatwg-url-canParse.js n=1000000 type='javascript'                                                                                              ░|                     +0.53% 
url/whatwg-url-canParse.js n=1000000 type='percent'                                                                                                  |                     -0.39% 
url/whatwg-url-canParse.js n=1000000 type='dot'                                                                                                     ░|░                    +0.93% 
url/whatwg-url-get-prop.js e=1 type='long'                                                                                                          ░|                     -0.91% 
url/whatwg-url-get-prop.js e=1 type='short'                                                                                                         ░|                     -1.10% 
url/whatwg-url-get-prop.js e=1 type='idn'                                                                                                            |██░░░                +9.16% **
url/whatwg-url-get-prop.js e=1 type='auth'                                                                                                        ░░▓|░                    -2.15% 
url/whatwg-url-get-prop.js e=1 type='file'                                                                                                          ░|                     +0.48% 
url/whatwg-url-get-prop.js e=1 type='ws'                                                                                                            ░|                     +0.54% 
url/whatwg-url-get-prop.js e=1 type='javascript'                                                                                                    ░|░                    +1.18% 
url/whatwg-url-get-prop.js e=1 type='percent'                                                                                                       ░|░░░                  +3.98% 
url/whatwg-url-get-prop.js e=1 type='dot'                                                                                                           ░|                     -0.13% 
url/whatwg-url-get-prop.js e=1 type='wpt'                                                                                                        ░░░▓|                     -3.11% 
url/whatwg-url-idna.js n=5000000 to='ascii' domain='empty'                                                                                           |                     +0.98% 
url/whatwg-url-idna.js n=5000000 to='unicode' domain='empty'                                                                                        ░|                     -1.08% 
url/whatwg-url-idna.js n=5000000 to='ascii' domain='none'                                                                                            |                     +0.09% 
url/whatwg-url-idna.js n=5000000 to='unicode' domain='none'                                                                                          |                     -0.02% 
url/whatwg-url-idna.js n=5000000 to='ascii' domain='some'                                                                                            |                     -0.00% 
url/whatwg-url-idna.js n=5000000 to='unicode' domain='some'                                                                                          |                     -0.12% 
url/whatwg-url-idna.js n=5000000 to='ascii' domain='all'                                                                                             |                     +0.24% 
url/whatwg-url-idna.js n=5000000 to='unicode' domain='all'                                                                                           |                     -0.04% 
url/whatwg-url-idna.js n=5000000 to='ascii' domain='nonstring'                                                                                       |                     +0.96% 
url/whatwg-url-idna.js n=5000000 to='unicode' domain='nonstring'                                                                                    ░|                     -0.41% 
url/whatwg-url-parse.js e=1 type='long' withBase='true'                                                                                            ░█|                     -3.09% *
url/whatwg-url-parse.js e=1 type='short' withBase='true'                                                                                            ░|░                    +1.53% 
url/whatwg-url-parse.js e=1 type='idn' withBase='true'                                                                                             ░░|                     -0.66% 
url/whatwg-url-parse.js e=1 type='auth' withBase='true'                                                                                             ░|                     +0.12% 
url/whatwg-url-parse.js e=1 type='file' withBase='true'                                                                                            ░▓|                     -1.44% 
url/whatwg-url-parse.js e=1 type='ws' withBase='true'                                                                                             ░██|                     -4.54% ***
url/whatwg-url-parse.js e=1 type='javascript' withBase='true'                                                                                       ░|                     -0.11% 
url/whatwg-url-parse.js e=1 type='percent' withBase='true'                                                                                         ░░|░                    -0.11% 
url/whatwg-url-parse.js e=1 type='dot' withBase='true'                                                                                             ░▓|                     -2.25% 
url/whatwg-url-parse.js e=1 type='wpt' withBase='true'                                                                                        ░░░░███|                     -9.18% *
url/whatwg-url-parse.js e=1 type='long' withBase='false'                                                                                            ░|░                    +0.95% 
url/whatwg-url-parse.js e=1 type='short' withBase='false'                                                                                           ░|                     +0.01% 
url/whatwg-url-parse.js e=1 type='idn' withBase='false'                                                                                            ░▓|                     -1.96% 
url/whatwg-url-parse.js e=1 type='auth' withBase='false'                                                                                           ░▓|                     -1.62% 
url/whatwg-url-parse.js e=1 type='file' withBase='false'                                                                                            ░|                     +0.63% 
url/whatwg-url-parse.js e=1 type='ws' withBase='false'                                                                                              ░|░                    +0.89% 
url/whatwg-url-parse.js e=1 type='javascript' withBase='false'                                                                                      ░|                     -0.22% 
url/whatwg-url-parse.js e=1 type='percent' withBase='false'                                                                                         ░|░░                   +2.53% 
url/whatwg-url-parse.js e=1 type='dot' withBase='false'                                                                                             ░|░                    +1.11% 
url/whatwg-url-parse.js e=1 type='wpt' withBase='false'                                                                                         ░░░░░|▓▓▓▓▓▓░░░░░░░░░░░░░  +20.52% 
url/whatwg-url-properties.js prop='href' e=1 type='wpt' withBase='true'                                                                             ░|▓▓░░░░               +8.11% 
url/whatwg-url-properties.js prop='origin' e=1 type='wpt' withBase='true'                                                                        ░░░░|░░░                  -0.24% 
url/whatwg-url-properties.js prop='protocol' e=1 type='wpt' withBase='true'                                                                       ░░░|░░░░                 +3.04% 
url/whatwg-url-properties.js prop='username' e=1 type='wpt' withBase='true'                                                                   ░░░▓▓▓▓|                     -9.80% 
url/whatwg-url-properties.js prop='password' e=1 type='wpt' withBase='true'                                                                       ░░░|░░░░                 +1.95% 
url/whatwg-url-properties.js prop='host' e=1 type='wpt' withBase='true'                                                                            ░░|▓▓░░░░               +7.13% 
url/whatwg-url-properties.js prop='hostname' e=1 type='wpt' withBase='true'                                                                       ░░░|░░░░░                +2.87% 
url/whatwg-url-properties.js prop='port' e=1 type='wpt' withBase='true'                                                                       ░░░░▓▓▓|                     -8.30% 
url/whatwg-url-properties.js prop='pathname' e=1 type='wpt' withBase='true'                                                                    ░░░░▓▓|░                    -5.48% 
url/whatwg-url-properties.js prop='search' e=1 type='wpt' withBase='true'                                                                         ░░░|▓░░░░                +4.80% 
url/whatwg-url-properties.js prop='searchParams' e=1 type='wpt' withBase='true'                                                               ░░░░▓▓▓|                     -8.18% 
url/whatwg-url-properties.js prop='hash' e=1 type='wpt' withBase='true'                                                                         ░░░░▓|░░                   -1.98% 
url/whatwg-url-properties.js prop='href' e=1 type='wpt' withBase='false'                                                                       ░░░░▓▓|░                    -6.06% 
url/whatwg-url-properties.js prop='origin' e=1 type='wpt' withBase='false'                                                                      ░░░░▓|░░░                  -1.72% 
url/whatwg-url-properties.js prop='protocol' e=1 type='wpt' withBase='false'                                                                     ░░░▓|                     -3.81% 
url/whatwg-url-properties.js prop='username' e=1 type='wpt' withBase='false'                                                                      ░░░|░░░                  +1.68% 
url/whatwg-url-properties.js prop='password' e=1 type='wpt' withBase='false'                                                                   ░░░▓▓▓|                     -7.52% 
url/whatwg-url-properties.js prop='host' e=1 type='wpt' withBase='false'                                                                         ░░░▓|░                    -1.92% 
url/whatwg-url-properties.js prop='hostname' e=1 type='wpt' withBase='false'                                                                     ░░░▓|░                    -2.31% 
url/whatwg-url-properties.js prop='port' e=1 type='wpt' withBase='false'                                                                         ░░░▓|░░                   -1.80% 
url/whatwg-url-properties.js prop='pathname' e=1 type='wpt' withBase='false'                                                                       ░░|░░░                  +2.60% 
url/whatwg-url-properties.js prop='search' e=1 type='wpt' withBase='false'                                                                        ░░░|░░░                  +2.22% 
url/whatwg-url-properties.js prop='searchParams' e=1 type='wpt' withBase='false'                                                                  ░░░|░░                   -0.05% 
url/whatwg-url-properties.js prop='hash' e=1 type='wpt' withBase='false'                                                                        ░░░▓▓|                     -6.17% 
url/whatwg-url-to-and-from-path.js n=5000000 input='/dev/null' method='pathToFileURL'                                                                |                     +0.30% 
url/whatwg-url-to-and-from-path.js n=5000000 input='/dev/null?key=param&bool' method='pathToFileURL'                                                ░|                     -0.72% 
url/whatwg-url-to-and-from-path.js n=5000000 input='/dev/null?key=param&bool#hash' method='pathToFileURL'                                            |                     -0.31% 
url/whatwg-url-to-and-from-path.js n=5000000 input='file:///dev/null' method='pathToFileURL'                                                         |                     -0.12% 
url/whatwg-url-to-and-from-path.js n=5000000 input='file:///dev/null?key=param&bool' method='pathToFileURL'                                          |                     -0.26% 
url/whatwg-url-to-and-from-path.js n=5000000 input='file:///dev/null?key=param&bool#hash' method='pathToFileURL'                                     |                     -0.00% 
url/whatwg-url-to-and-from-path.js n=5000000 input='file:///dev/null' method='fileURLToPath'                                                         |                     -0.06% 
url/whatwg-url-to-and-from-path.js n=5000000 input='file:///dev/null?key=param&bool' method='fileURLToPath'                                         ░|                     -0.81% *
url/whatwg-url-to-and-from-path.js n=5000000 input='file:///dev/null?key=param&bool#hash' method='fileURLToPath'                                     |                     +0.20% 
url/whatwg-url-validity.js e=100000 type='valid'                                                                                                   ░░|░░░                  +2.57% 
url/whatwg-url-validity.js e=100000 type='invalid'                                                                                                   |                     +0.23% 

Rates were scaled by 1000x into HdrHistogram (3 significant figures).
Use --scale to adjust precision if needed.

Be aware that when doing many comparisons the risk of a false-positive
result increases. In this case, there are 352 comparisons, you can thus
expect the following amount of false-positive results:
  17.60 false positives, when considering a   5% risk acceptance (*, **, ***),
  3.52 false positives, when considering a   1% risk acceptance (**, ***),
  0.35 false positives, when considering a 0.1% risk acceptance (***)

@legendecas legendecas added commit-queue PRs queued for automated landing through the Commit Queue. commit-queue-squash PRs the Commit Queue should land as one squashed commit. labels Nov 3, 2026
@nodejs-github-bot
nodejs-github-bot merged commit b2913b4 into nodejs:main Nov 3, 2026
90 checks passed
@nodejs-github-bot

nodejs-github-bot commented Nov 3, 2026 •

Copy link
Copy Markdown
Collaborator

Landed in b2913b4 reverted in 4b8a982

Landed in b4b7d3d...c0abfea

@nodejs-github-bot nodejs-github-bot removed the commit-queue PRs queued for automated landing through the Commit Queue. label Nov 3, 2026
@bakkot
bakkot deleted the iterator-result-value-first branch November 3, 2026 20:07
@aduh95

aduh95 commented Nov 3, 2026

Copy link
Copy Markdown
Contributor

Linter is failing on main with this PR:

Running JS linter...

/home/runner/work/node/node/lib/internal/vfs/watcher.js
Error:   632:23  error  Iterator result objects should place `value` before `done`  node-core/iterator-result-value-first

✖ 1 problem (1 error, 0 warnings)
  1 error and 0 warnings potentially fixable with the `--fix` option.

make: *** [Makefile:1548: lint-js] Error 1

ERROR: The JavaScript lint validation failed (the errors are logged above).
       Please fix the lint errors.
       Run:
          make lint-js-fix
       to fix the lint issues.
diff --git a/lib/internal/vfs/watcher.js b/lib/internal/vfs/watcher.js
index ee7cd9e5..799b537a 100644
--- a/lib/internal/vfs/watcher.js
+++ b/lib/internal/vfs/watcher.js
@@ -629,7 +629,7 @@ class VFSWatchAsyncIterable {
           reject(err);
           while (this.#pendingResolvers.length > 0) {
             const { resolve } = this.#pendingResolvers.shift();
-            resolve({ done: true, value: undefined });
+            resolve({ value: undefined, done: true });
           }
         } else {
           this.#abortError = err;

@LiviaMedeiros

Copy link
Copy Markdown
Member

This PR probably should've been commit-queue-rebased 😬

aduh95 added a commit that referenced this pull request Nov 3, 2026
This reverts commit b2913b4.

PR-URL: #66837
Reviewed-By: Jordan Harband <ljharb@gmail.com>
Reviewed-By: LiviaMedeiros <livia@cirno.name>
aduh95 pushed a commit that referenced this pull request Nov 3, 2026
Signed-off-by: LiviaMedeiros <livia@cirno.name>
PR-URL: #67231
Refs: #66837
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
aduh95 pushed a commit that referenced this pull request Nov 3, 2026
Assisted-by: claude:opus-5.5
Signed-off-by: Kevin Gibbons <bakkot@gmail.com>
PR-URL: #66837
Reviewed-By: Jordan Harband <ljharb@gmail.com>
Reviewed-By: LiviaMedeiros <livia@cirno.name>
aduh95 pushed a commit that referenced this pull request Nov 3, 2026
V8 has a fast path for `{ value, done }` literals, but it must be that
order.
Also, the ES spec technically requires that order.

Assisted-by: claude:opus-5.5
Signed-off-by: Kevin Gibbons <bakkot@gmail.com>
PR-URL: #66837
Reviewed-By: Jordan Harband <ljharb@gmail.com>
Reviewed-By: LiviaMedeiros <livia@cirno.name>
aduh95 pushed a commit that referenced this pull request Nov 3, 2026
Apply the iterator-result-value-first lint fixer.

Assisted-by: claude:opus-5.5
Signed-off-by: Kevin Gibbons <bakkot@gmail.com>
PR-URL: #66837
Reviewed-By: Jordan Harband <ljharb@gmail.com>
Reviewed-By: LiviaMedeiros <livia@cirno.name>
aduh95 pushed a commit that referenced this pull request Nov 11, 2026
Assisted-by: claude:opus-5.5
Signed-off-by: Kevin Gibbons <bakkot@gmail.com>
PR-URL: #66837
Reviewed-By: Jordan Harband <ljharb@gmail.com>
Reviewed-By: LiviaMedeiros <livia@cirno.name>
aduh95 added a commit that referenced this pull request Nov 11, 2026
This reverts commit b2913b4.

PR-URL: #66837
Reviewed-By: Jordan Harband <ljharb@gmail.com>
Reviewed-By: LiviaMedeiros <livia@cirno.name>
aduh95 pushed a commit that referenced this pull request Nov 11, 2026
Signed-off-by: LiviaMedeiros <livia@cirno.name>
PR-URL: #67231
Refs: #66837
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
aduh95 pushed a commit that referenced this pull request Nov 11, 2026
Assisted-by: claude:opus-5.5
Signed-off-by: Kevin Gibbons <bakkot@gmail.com>
PR-URL: #66837
Reviewed-By: Jordan Harband <ljharb@gmail.com>
Reviewed-By: LiviaMedeiros <livia@cirno.name>
aduh95 pushed a commit that referenced this pull request Nov 11, 2026
V8 has a fast path for `{ value, done }` literals, but it must be that
order.
Also, the ES spec technically requires that order.

Assisted-by: claude:opus-5.5
Signed-off-by: Kevin Gibbons <bakkot@gmail.com>
PR-URL: #66837
Reviewed-By: Jordan Harband <ljharb@gmail.com>
Reviewed-By: LiviaMedeiros <livia@cirno.name>
aduh95 pushed a commit that referenced this pull request Nov 11, 2026
Apply the iterator-result-value-first lint fixer.

Assisted-by: claude:opus-5.5
Signed-off-by: Kevin Gibbons <bakkot@gmail.com>
PR-URL: #66837
Reviewed-By: Jordan Harband <ljharb@gmail.com>
Reviewed-By: LiviaMedeiros <livia@cirno.name>
aduh95 pushed a commit that referenced this pull request Nov 12, 2026
Assisted-by: claude:opus-5.5
Signed-off-by: Kevin Gibbons <bakkot@gmail.com>
PR-URL: #66837
Reviewed-By: Jordan Harband <ljharb@gmail.com>
Reviewed-By: LiviaMedeiros <livia@cirno.name>
aduh95 added a commit that referenced this pull request Nov 12, 2026
This reverts commit b2913b4.

PR-URL: #66837
Reviewed-By: Jordan Harband <ljharb@gmail.com>
Reviewed-By: LiviaMedeiros <livia@cirno.name>
aduh95 pushed a commit that referenced this pull request Nov 12, 2026
Signed-off-by: LiviaMedeiros <livia@cirno.name>
PR-URL: #67231
Refs: #66837
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
aduh95 pushed a commit that referenced this pull request Nov 12, 2026
Assisted-by: claude:opus-5.5
Signed-off-by: Kevin Gibbons <bakkot@gmail.com>
PR-URL: #66837
Reviewed-By: Jordan Harband <ljharb@gmail.com>
Reviewed-By: LiviaMedeiros <livia@cirno.name>
aduh95 pushed a commit that referenced this pull request Nov 12, 2026
V8 has a fast path for `{ value, done }` literals, but it must be that
order.
Also, the ES spec technically requires that order.

Assisted-by: claude:opus-5.5
Signed-off-by: Kevin Gibbons <bakkot@gmail.com>
PR-URL: #66837
Reviewed-By: Jordan Harband <ljharb@gmail.com>
Reviewed-By: LiviaMedeiros <livia@cirno.name>
aduh95 pushed a commit that referenced this pull request Nov 12, 2026
Apply the iterator-result-value-first lint fixer.

Assisted-by: claude:opus-5.5
Signed-off-by: Kevin Gibbons <bakkot@gmail.com>
PR-URL: #66837
Reviewed-By: Jordan Harband <ljharb@gmail.com>
Reviewed-By: LiviaMedeiros <livia@cirno.name>
aduh95 pushed a commit that referenced this pull request Nov 12, 2026
Assisted-by: claude:opus-5.5
Signed-off-by: Kevin Gibbons <bakkot@gmail.com>
PR-URL: #66837
Reviewed-By: Jordan Harband <ljharb@gmail.com>
Reviewed-By: LiviaMedeiros <livia@cirno.name>
aduh95 added a commit that referenced this pull request Nov 12, 2026
This reverts commit b2913b4.

PR-URL: #66837
Reviewed-By: Jordan Harband <ljharb@gmail.com>
Reviewed-By: LiviaMedeiros <livia@cirno.name>
aduh95 pushed a commit that referenced this pull request Nov 12, 2026
Signed-off-by: LiviaMedeiros <livia@cirno.name>
PR-URL: #67231
Refs: #66837
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Richard Lau <riclau@uk.ibm.com>
aduh95 pushed a commit that referenced this pull request Nov 12, 2026
Assisted-by: claude:opus-5.5
Signed-off-by: Kevin Gibbons <bakkot@gmail.com>
PR-URL: #66837
Reviewed-By: Jordan Harband <ljharb@gmail.com>
Reviewed-By: LiviaMedeiros <livia@cirno.name>
aduh95 pushed a commit that referenced this pull request Nov 12, 2026
V8 has a fast path for `{ value, done }` literals, but it must be that
order.
Also, the ES spec technically requires that order.

Assisted-by: claude:opus-5.5
Signed-off-by: Kevin Gibbons <bakkot@gmail.com>
PR-URL: #66837
Reviewed-By: Jordan Harband <ljharb@gmail.com>
Reviewed-By: LiviaMedeiros <livia@cirno.name>
aduh95 pushed a commit that referenced this pull request Nov 12, 2026
Apply the iterator-result-value-first lint fixer.

Assisted-by: claude:opus-5.5
Signed-off-by: Kevin Gibbons <bakkot@gmail.com>
PR-URL: #66837
Reviewed-By: Jordan Harband <ljharb@gmail.com>
Reviewed-By: LiviaMedeiros <livia@cirno.name>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

author ready PRs with CI started, the required approvals, and no outstanding review comments. commit-queue-squash PRs the Commit Queue should land as one squashed commit. lib / src Issues and PRs involving general changes in the lib/ or src/ directories. needs-benchmark-ci PRs that need a benchmark CI run. needs-ci PRs that need a full CI run.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants