Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

url: refactor pathToFileURL to native #55476

Merged
merged 2 commits into from
Oct 31, 2024

Conversation

aduh95
Copy link
Contributor

@aduh95 aduh95 commented Oct 20, 2024

As suggested in #54545 (comment), let's see if it's faster.

@nodejs-github-bot
Copy link
Collaborator

Review requested:

  • @nodejs/url

@nodejs-github-bot nodejs-github-bot added c++ Issues and PRs that require attention from people who are familiar with C++. lib / src Issues and PRs related to general changes in the lib or src directory. needs-ci PRs that need a full CI run. labels Oct 20, 2024
@aduh95
Copy link
Contributor Author

aduh95 commented Oct 20, 2024

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

Results
confidence improvement accuracy (*)   (**)  (***)
url/whatwg-url-to-and-from-path.js n=5000000 input='/dev/null?key=param&bool' method='pathToFileURL'                    ***     26.63 %       ±0.93% ±1.25% ±1.66%
url/whatwg-url-to-and-from-path.js n=5000000 input='/dev/null?key=param&bool#hash' method='pathToFileURL'               ***     39.81 %       ±0.88% ±1.18% ±1.57%
url/whatwg-url-to-and-from-path.js n=5000000 input='/dev/null' method='pathToFileURL'                                   ***     29.59 %       ±0.59% ±0.79% ±1.03%
url/whatwg-url-to-and-from-path.js n=5000000 input='file:///dev/null?key=param&bool' method='fileURLToPath'             ***     -1.33 %       ±0.28% ±0.37% ±0.48%
url/whatwg-url-to-and-from-path.js n=5000000 input='file:///dev/null?key=param&bool' method='pathToFileURL'             ***     11.62 %       ±0.29% ±0.38% ±0.50%
url/whatwg-url-to-and-from-path.js n=5000000 input='file:///dev/null?key=param&bool#hash' method='fileURLToPath'        ***     -2.27 %       ±0.38% ±0.50% ±0.66%
url/whatwg-url-to-and-from-path.js n=5000000 input='file:///dev/null?key=param&bool#hash' method='pathToFileURL'        ***     22.66 %       ±0.39% ±0.52% ±0.68%
url/whatwg-url-to-and-from-path.js n=5000000 input='file:///dev/null' method='fileURLToPath'                            ***     -1.64 %       ±0.30% ±0.40% ±0.52%
url/whatwg-url-to-and-from-path.js n=5000000 input='file:///dev/null' method='pathToFileURL'                            ***      7.78 %       ±0.57% ±0.76% ±1.01%

lib/internal/url.js Outdated Show resolved Hide resolved
@RedYetiDev RedYetiDev added whatwg-url Issues and PRs related to the WHATWG URL implementation. needs-benchmark-ci PR that need a benchmark CI run. and removed lib / src Issues and PRs related to general changes in the lib or src directory. labels Oct 20, 2024
src/node_url.cc Outdated Show resolved Hide resolved
src/node_url.cc Outdated Show resolved Hide resolved
src/node_url.cc Outdated Show resolved Hide resolved
src/node_url.cc Outdated Show resolved Hide resolved
@anonrig
Copy link
Member

anonrig commented Oct 20, 2024

Amazing work. This will really improve the performance and make a huge impact.

lib/internal/url.js Outdated Show resolved Hide resolved
src/node_url.cc Outdated
@@ -75,6 +75,73 @@ void BindingData::Deserialize(v8::Local<v8::Context> context,
CHECK_NOT_NULL(binding);
}

std::string EncodePathChars(const std::string& input_str, bool windows) {
Copy link
Member

Choose a reason for hiding this comment

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

Non-blocking nit: Really not a big fan of bool arguments to methods like this. Would prefer an enum.

Copy link
Member

Choose a reason for hiding this comment

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

PS: If you use a template argument you can make isWindows checks a constexpr and eliminate the branch.

Copy link

codecov bot commented Oct 21, 2024

Codecov Report

Attention: Patch coverage is 80.00000% with 11 lines in your changes missing coverage. Please review.

Project coverage is 88.41%. Comparing base (5d4fee8) to head (6ab734f).
Report is 25 commits behind head on main.

Files with missing lines Patch % Lines
src/node_url.cc 72.50% 1 Missing and 10 partials ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main   #55476      +/-   ##
==========================================
- Coverage   88.42%   88.41%   -0.01%     
==========================================
  Files         654      654              
  Lines      187662   187640      -22     
  Branches    36118    36121       +3     
==========================================
- Hits       165945   165909      -36     
- Misses      14955    14958       +3     
- Partials     6762     6773      +11     
Files with missing lines Coverage Δ
lib/internal/url.js 97.66% <100.00%> (-0.09%) ⬇️
src/node_url.h 100.00% <ø> (ø)
src/node_url.cc 82.84% <72.50%> (-1.39%) ⬇️

... and 29 files with indirect coverage changes

@aduh95
Copy link
Contributor Author

aduh95 commented Oct 21, 2024

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

Results
confidence improvement accuracy (*)   (**)  (***)
url/whatwg-url-to-and-from-path.js n=5000000 input='/dev/null?key=param&bool' method='pathToFileURL'                    ***     29.14 %       ±0.92% ±1.24% ±1.64%
url/whatwg-url-to-and-from-path.js n=5000000 input='/dev/null?key=param&bool#hash' method='pathToFileURL'               ***     46.62 %       ±0.25% ±0.34% ±0.44%
url/whatwg-url-to-and-from-path.js n=5000000 input='/dev/null' method='pathToFileURL'                                   ***     29.72 %       ±0.29% ±0.39% ±0.51%
url/whatwg-url-to-and-from-path.js n=5000000 input='file:///dev/null?key=param&bool' method='fileURLToPath'             ***     -0.97 %       ±0.30% ±0.40% ±0.53%
url/whatwg-url-to-and-from-path.js n=5000000 input='file:///dev/null?key=param&bool' method='pathToFileURL'             ***     16.86 %       ±0.42% ±0.57% ±0.75%
url/whatwg-url-to-and-from-path.js n=5000000 input='file:///dev/null?key=param&bool#hash' method='fileURLToPath'                -0.37 %       ±0.45% ±0.59% ±0.77%
url/whatwg-url-to-and-from-path.js n=5000000 input='file:///dev/null?key=param&bool#hash' method='pathToFileURL'        ***     28.00 %       ±0.32% ±0.42% ±0.55%
url/whatwg-url-to-and-from-path.js n=5000000 input='file:///dev/null' method='fileURLToPath'                             **     -1.12 %       ±0.76% ±1.01% ±1.33%
url/whatwg-url-to-and-from-path.js n=5000000 input='file:///dev/null' method='pathToFileURL'                            ***     10.49 %       ±0.49% ±0.66% ±0.88%

src/node_url.cc Outdated Show resolved Hide resolved
@anonrig

This comment was marked as resolved.

@aduh95
Copy link
Contributor Author

aduh95 commented Oct 27, 2024

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

Results
                                                                                                                 confidence improvement accuracy (*)   (**)  (***)
url/whatwg-url-to-and-from-path.js n=5000000 input='/dev/null?key=param&bool' method='pathToFileURL'                    ***     19.46 %       ±0.91% ±1.23% ±1.63%
url/whatwg-url-to-and-from-path.js n=5000000 input='/dev/null?key=param&bool#hash' method='pathToFileURL'               ***     33.85 %       ±0.80% ±1.07% ±1.40%
url/whatwg-url-to-and-from-path.js n=5000000 input='/dev/null' method='pathToFileURL'                                   ***     19.67 %       ±0.58% ±0.78% ±1.03%
url/whatwg-url-to-and-from-path.js n=5000000 input='file:///dev/null?key=param&bool' method='fileURLToPath'             ***     -1.43 %       ±0.72% ±0.96% ±1.26%
url/whatwg-url-to-and-from-path.js n=5000000 input='file:///dev/null?key=param&bool' method='pathToFileURL'             ***      7.76 %       ±1.27% ±1.71% ±2.27%
url/whatwg-url-to-and-from-path.js n=5000000 input='file:///dev/null?key=param&bool#hash' method='fileURLToPath'        ***     -2.45 %       ±0.43% ±0.58% ±0.76%
url/whatwg-url-to-and-from-path.js n=5000000 input='file:///dev/null?key=param&bool#hash' method='pathToFileURL'        ***     18.81 %       ±0.40% ±0.53% ±0.69%
url/whatwg-url-to-and-from-path.js n=5000000 input='file:///dev/null' method='fileURLToPath'                            ***     -2.30 %       ±0.65% ±0.87% ±1.15%
url/whatwg-url-to-and-from-path.js n=5000000 input='file:///dev/null' method='pathToFileURL'                            ***      2.25 %       ±0.29% ±0.39% ±0.52%

@aduh95
Copy link
Contributor Author

aduh95 commented Oct 27, 2024

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

Results
                                                                                                                 confidence improvement accuracy (*)   (**)   (***)
url/legacy-url-get-prop.js e=1 type='auth'                                                                                       0.49 %       ±4.89% ±6.52%  ±8.51%
url/legacy-url-get-prop.js e=1 type='dot'                                                                                **     -3.57 %       ±2.39% ±3.18%  ±4.15%
url/legacy-url-get-prop.js e=1 type='file'                                                                                      -0.10 %       ±1.92% ±2.56%  ±3.34%
url/legacy-url-get-prop.js e=1 type='idn'                                                                                 *      3.92 %       ±3.17% ±4.24%  ±5.56%
url/legacy-url-get-prop.js e=1 type='javascript'                                                                                 0.64 %       ±3.31% ±4.41%  ±5.77%
url/legacy-url-get-prop.js e=1 type='long'                                                                                      -3.63 %       ±5.90% ±7.84% ±10.21%
url/legacy-url-get-prop.js e=1 type='percent'                                                                                    0.86 %       ±3.04% ±4.04%  ±5.26%
url/legacy-url-get-prop.js e=1 type='short'                                                                               *     -3.43 %       ±3.00% ±4.00%  ±5.21%
url/legacy-url-get-prop.js e=1 type='wpt'                                                                                        0.48 %       ±4.87% ±6.48%  ±8.45%
url/legacy-url-get-prop.js e=1 type='ws'                                                                                        -1.27 %       ±3.86% ±5.14%  ±6.71%
url/legacy-url-parse.js e=1 type='auth'                                                                                   *      2.21 %       ±2.09% ±2.80%  ±3.68%
url/legacy-url-parse.js e=1 type='dot'                                                                                           0.00 %       ±1.76% ±2.35%  ±3.07%
url/legacy-url-parse.js e=1 type='file'                                                                                          0.49 %       ±1.46% ±1.95%  ±2.55%
url/legacy-url-parse.js e=1 type='idn'                                                                                          -1.08 %       ±3.05% ±4.06%  ±5.28%
url/legacy-url-parse.js e=1 type='javascript'                                                                                    0.83 %       ±2.10% ±2.80%  ±3.65%
url/legacy-url-parse.js e=1 type='long'                                                                                          1.73 %       ±3.36% ±4.48%  ±5.85%
url/legacy-url-parse.js e=1 type='percent'                                                                                       0.21 %       ±1.69% ±2.25%  ±2.94%
url/legacy-url-parse.js e=1 type='short'                                                                                        -0.80 %       ±1.40% ±1.86%  ±2.42%
url/legacy-url-parse.js e=1 type='wpt'                                                                                          -2.14 %       ±4.75% ±6.34%  ±8.28%
url/legacy-url-parse.js e=1 type='ws'                                                                                           -2.95 %       ±3.05% ±4.09%  ±5.39%
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='legacy' searchParam='altspaces'                                 0.51 %       ±0.55% ±0.74%  ±0.96%
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='legacy' searchParam='encodefake'                       ***     -3.66 %       ±0.57% ±0.76%  ±0.99%
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='legacy' searchParam='encodelast'                       ***      1.44 %       ±0.59% ±0.78%  ±1.02%
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='legacy' searchParam='encodemany'                               -0.04 %       ±0.41% ±0.55%  ±0.73%
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='legacy' searchParam='manyblankpairs'                           -0.04 %       ±0.68% ±0.90%  ±1.17%
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='legacy' searchParam='manypairs'                        ***      3.44 %       ±1.39% ±1.86%  ±2.43%
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='legacy' searchParam='multicharsep'                     ***     -2.63 %       ±0.47% ±0.63%  ±0.82%
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='legacy' searchParam='multivalue'                       ***     -2.32 %       ±0.91% ±1.21%  ±1.58%
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='legacy' searchParam='multivaluemany'                     *     -1.20 %       ±1.02% ±1.35%  ±1.76%
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='legacy' searchParam='noencode'                         ***     -1.93 %       ±0.61% ±0.81%  ±1.06%
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='whatwg' searchParam='altspaces'                                -0.39 %       ±0.47% ±0.63%  ±0.81%
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='whatwg' searchParam='encodefake'                         *      0.42 %       ±0.42% ±0.56%  ±0.73%
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='whatwg' searchParam='encodelast'                               -0.21 %       ±0.32% ±0.43%  ±0.55%
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='whatwg' searchParam='encodemany'                         *     -0.52 %       ±0.48% ±0.64%  ±0.84%
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='whatwg' searchParam='manyblankpairs'                           -0.29 %       ±1.07% ±1.43%  ±1.86%
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='whatwg' searchParam='manypairs'                                 0.23 %       ±0.60% ±0.80%  ±1.04%
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='whatwg' searchParam='multicharsep'                              0.17 %       ±0.66% ±0.88%  ±1.14%
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='whatwg' searchParam='multivalue'                               -0.33 %       ±0.39% ±0.51%  ±0.67%
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='whatwg' searchParam='multivaluemany'                            0.06 %       ±0.50% ±0.67%  ±0.87%
url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='whatwg' searchParam='noencode'                                  0.09 %       ±0.59% ±0.79%  ±1.02%
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='legacy' searchParam='altspaces'                            -0.05 %       ±0.38% ±0.51%  ±0.67%
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='legacy' searchParam='encodefake'                           -0.27 %       ±0.47% ±0.62%  ±0.81%
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='legacy' searchParam='encodelast'                           -0.37 %       ±0.58% ±0.78%  ±1.02%
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='legacy' searchParam='encodemany'                     *     -0.43 %       ±0.43% ±0.57%  ±0.74%
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='legacy' searchParam='manyblankpairs'                        1.58 %       ±2.35% ±3.15%  ±4.14%
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='legacy' searchParam='manypairs'                            -0.10 %       ±1.33% ±1.77%  ±2.30%
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='legacy' searchParam='multicharsep'                          0.35 %       ±0.45% ±0.61%  ±0.79%
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='legacy' searchParam='multivalue'                   ***     -1.58 %       ±0.56% ±0.75%  ±0.98%
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='legacy' searchParam='multivaluemany'                       -0.02 %       ±0.48% ±0.64%  ±0.84%
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='legacy' searchParam='noencode'                             -0.20 %       ±0.47% ±0.62%  ±0.81%
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='whatwg' searchParam='altspaces'                             0.18 %       ±0.32% ±0.42%  ±0.55%
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='whatwg' searchParam='encodefake'                            0.17 %       ±0.47% ±0.63%  ±0.82%
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='whatwg' searchParam='encodelast'                            0.39 %       ±0.47% ±0.62%  ±0.81%
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='whatwg' searchParam='encodemany'                            0.01 %       ±0.47% ±0.63%  ±0.82%
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='whatwg' searchParam='manyblankpairs'                        0.92 %       ±4.74% ±6.30%  ±8.21%
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='whatwg' searchParam='manypairs'                            -0.41 %       ±0.47% ±0.62%  ±0.81%
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='whatwg' searchParam='multicharsep'                         -0.08 %       ±0.58% ±0.77%  ±1.00%
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='whatwg' searchParam='multivalue'                           -0.23 %       ±0.55% ±0.74%  ±0.96%
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='whatwg' searchParam='multivaluemany'                       -0.05 %       ±0.19% ±0.25%  ±0.33%
url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='whatwg' searchParam='noencode'                       *      0.60 %       ±0.54% ±0.72%  ±0.94%
url/legacy-vs-whatwg-url-serialize.js e=1 method='legacy' type='auth'                                                     *     -2.30 %       ±1.82% ±2.43%  ±3.17%
url/legacy-vs-whatwg-url-serialize.js e=1 method='legacy' type='dot'                                                            -1.64 %       ±3.61% ±4.83%  ±6.34%
url/legacy-vs-whatwg-url-serialize.js e=1 method='legacy' type='file'                                                            0.21 %       ±1.31% ±1.75%  ±2.28%
url/legacy-vs-whatwg-url-serialize.js e=1 method='legacy' type='idn'                                                            -0.61 %       ±1.95% ±2.59%  ±3.37%
url/legacy-vs-whatwg-url-serialize.js e=1 method='legacy' type='javascript'                                                     -1.46 %       ±2.37% ±3.16%  ±4.13%
url/legacy-vs-whatwg-url-serialize.js e=1 method='legacy' type='long'                                                           -1.81 %       ±3.49% ±4.64%  ±6.04%
url/legacy-vs-whatwg-url-serialize.js e=1 method='legacy' type='percent'                                                ***     -1.98 %       ±0.78% ±1.04%  ±1.36%
url/legacy-vs-whatwg-url-serialize.js e=1 method='legacy' type='short'                                                          -0.99 %       ±1.95% ±2.59%  ±3.37%
url/legacy-vs-whatwg-url-serialize.js e=1 method='legacy' type='wpt'                                                             1.26 %       ±1.92% ±2.57%  ±3.38%
url/legacy-vs-whatwg-url-serialize.js e=1 method='legacy' type='ws'                                                       *      7.20 %       ±5.83% ±7.82% ±10.31%
url/legacy-vs-whatwg-url-serialize.js e=1 method='whatwg' type='auth'                                                           -0.64 %       ±1.91% ±2.56%  ±3.35%
url/legacy-vs-whatwg-url-serialize.js e=1 method='whatwg' type='dot'                                                      *     -2.80 %       ±2.59% ±3.44%  ±4.48%
url/legacy-vs-whatwg-url-serialize.js e=1 method='whatwg' type='file'                                                           -0.51 %       ±2.01% ±2.68%  ±3.51%
url/legacy-vs-whatwg-url-serialize.js e=1 method='whatwg' type='idn'                                                            -1.07 %       ±4.81% ±6.41%  ±8.35%
url/legacy-vs-whatwg-url-serialize.js e=1 method='whatwg' type='javascript'                                               *     -3.54 %       ±3.50% ±4.66%  ±6.09%
url/legacy-vs-whatwg-url-serialize.js e=1 method='whatwg' type='long'                                                           -1.96 %       ±3.46% ±4.61%  ±6.03%
url/legacy-vs-whatwg-url-serialize.js e=1 method='whatwg' type='percent'                                                        -1.77 %       ±2.30% ±3.06%  ±3.98%
url/legacy-vs-whatwg-url-serialize.js e=1 method='whatwg' type='short'                                                          -2.03 %       ±2.47% ±3.29%  ±4.28%
url/legacy-vs-whatwg-url-serialize.js e=1 method='whatwg' type='wpt'                                                             1.47 %       ±3.28% ±4.37%  ±5.68%
url/legacy-vs-whatwg-url-serialize.js e=1 method='whatwg' type='ws'                                                      **     -3.11 %       ±2.03% ±2.70%  ±3.51%
url/url-format.js n=25000000 type='file'                                                                                  *      1.15 %       ±1.04% ±1.38%  ±1.80%
url/url-format.js n=25000000 type='slashes'                                                                             ***      4.78 %       ±1.11% ±1.48%  ±1.93%
url/url-parse.js n=10000000 type='escaped'                                                                              ***     -3.53 %       ±0.28% ±0.37%  ±0.48%
url/url-parse.js n=10000000 type='normal'                                                                                        0.32 %       ±0.60% ±0.80%  ±1.04%
url/url-resolve.js n=100000 path='down' href='auth'                                                                     ***      1.40 %       ±0.31% ±0.41%  ±0.53%
url/url-resolve.js n=100000 path='down' href='dot'                                                                              -0.09 %       ±0.41% ±0.55%  ±0.71%
url/url-resolve.js n=100000 path='down' href='file'                                                                              0.04 %       ±0.34% ±0.46%  ±0.60%
url/url-resolve.js n=100000 path='down' href='idn'                                                                        *      0.73 %       ±0.61% ±0.81%  ±1.06%
url/url-resolve.js n=100000 path='down' href='javascript'                                                               ***     -1.40 %       ±0.36% ±0.48%  ±0.63%
url/url-resolve.js n=100000 path='down' href='long'                                                                     ***      0.99 %       ±0.27% ±0.35%  ±0.46%
url/url-resolve.js n=100000 path='down' href='noscheme'                                                                         -0.40 %       ±0.43% ±0.58%  ±0.75%
url/url-resolve.js n=100000 path='down' href='percent'                                                                    *     -0.42 %       ±0.35% ±0.47%  ±0.61%
url/url-resolve.js n=100000 path='down' href='short'                                                                            -0.32 %       ±0.58% ±0.77%  ±1.01%
url/url-resolve.js n=100000 path='down' href='ws'                                                                        **     -0.34 %       ±0.21% ±0.27%  ±0.36%
url/url-resolve.js n=100000 path='foo/bar' href='auth'                                                                          -0.68 %       ±0.80% ±1.07%  ±1.41%
url/url-resolve.js n=100000 path='foo/bar' href='dot'                                                                   ***      1.35 %       ±0.59% ±0.79%  ±1.03%
url/url-resolve.js n=100000 path='foo/bar' href='file'                                                                          -0.08 %       ±0.40% ±0.53%  ±0.69%
url/url-resolve.js n=100000 path='foo/bar' href='idn'                                                                           -0.02 %       ±0.35% ±0.46%  ±0.60%
url/url-resolve.js n=100000 path='foo/bar' href='javascript'                                                                     0.40 %       ±0.44% ±0.58%  ±0.76%
url/url-resolve.js n=100000 path='foo/bar' href='long'                                                                          -0.01 %       ±0.17% ±0.23%  ±0.30%
url/url-resolve.js n=100000 path='foo/bar' href='noscheme'                                                               **      0.55 %       ±0.38% ±0.50%  ±0.66%
url/url-resolve.js n=100000 path='foo/bar' href='percent'                                                                       -0.09 %       ±0.58% ±0.78%  ±1.03%
url/url-resolve.js n=100000 path='foo/bar' href='short'                                                                   *      0.58 %       ±0.57% ±0.76%  ±1.00%
url/url-resolve.js n=100000 path='foo/bar' href='ws'                                                                      *     -0.44 %       ±0.44% ±0.58%  ±0.75%
url/url-resolve.js n=100000 path='sibling' href='auth'                                                                  ***      2.49 %       ±0.28% ±0.38%  ±0.49%
url/url-resolve.js n=100000 path='sibling' href='dot'                                                                     *     -0.71 %       ±0.58% ±0.78%  ±1.01%
url/url-resolve.js n=100000 path='sibling' href='file'                                                                          -0.43 %       ±0.52% ±0.70%  ±0.92%
url/url-resolve.js n=100000 path='sibling' href='idn'                                                                           -0.10 %       ±0.50% ±0.66%  ±0.86%
url/url-resolve.js n=100000 path='sibling' href='javascript'                                                                    -0.05 %       ±0.30% ±0.40%  ±0.53%
url/url-resolve.js n=100000 path='sibling' href='long'                                                                  ***      1.45 %       ±0.27% ±0.35%  ±0.46%
url/url-resolve.js n=100000 path='sibling' href='noscheme'                                                               **      0.50 %       ±0.38% ±0.50%  ±0.65%
url/url-resolve.js n=100000 path='sibling' href='percent'                                                                 *      0.48 %       ±0.39% ±0.51%  ±0.67%
url/url-resolve.js n=100000 path='sibling' href='short'                                                                          0.32 %       ±0.62% ±0.82%  ±1.07%
url/url-resolve.js n=100000 path='sibling' href='ws'                                                                             0.04 %       ±0.52% ±0.69%  ±0.90%
url/url-resolve.js n=100000 path='up' href='auth'                                                                                0.02 %       ±0.39% ±0.52%  ±0.68%
url/url-resolve.js n=100000 path='up' href='dot'                                                                          *     -0.50 %       ±0.43% ±0.57%  ±0.74%
url/url-resolve.js n=100000 path='up' href='file'                                                                                0.07 %       ±0.28% ±0.37%  ±0.48%
url/url-resolve.js n=100000 path='up' href='idn'                                                                        ***     -0.73 %       ±0.41% ±0.54%  ±0.71%
url/url-resolve.js n=100000 path='up' href='javascript'                                                                 ***     -1.35 %       ±0.32% ±0.43%  ±0.56%
url/url-resolve.js n=100000 path='up' href='long'                                                                                0.26 %       ±0.48% ±0.64%  ±0.83%
url/url-resolve.js n=100000 path='up' href='noscheme'                                                                   ***      0.70 %       ±0.36% ±0.48%  ±0.63%
url/url-resolve.js n=100000 path='up' href='percent'                                                                     **      0.47 %       ±0.34% ±0.46%  ±0.59%
url/url-resolve.js n=100000 path='up' href='short'                                                                        *     -0.92 %       ±0.74% ±0.98%  ±1.27%
url/url-resolve.js n=100000 path='up' href='ws'                                                                                 -0.07 %       ±0.46% ±0.61%  ±0.79%
url/url-resolve.js n=100000 path='withscheme' href='auth'                                                                        0.15 %       ±0.98% ±1.30%  ±1.69%
url/url-resolve.js n=100000 path='withscheme' href='dot'                                                                ***      5.22 %       ±0.62% ±0.83%  ±1.08%
url/url-resolve.js n=100000 path='withscheme' href='file'                                                                 *      0.55 %       ±0.45% ±0.60%  ±0.79%
url/url-resolve.js n=100000 path='withscheme' href='idn'                                                                ***      2.25 %       ±0.35% ±0.46%  ±0.60%
url/url-resolve.js n=100000 path='withscheme' href='javascript'                                                                  0.38 %       ±0.47% ±0.63%  ±0.83%
url/url-resolve.js n=100000 path='withscheme' href='long'                                                                       -0.25 %       ±0.30% ±0.40%  ±0.52%
url/url-resolve.js n=100000 path='withscheme' href='noscheme'                                                           ***      2.71 %       ±0.71% ±0.94%  ±1.23%
url/url-resolve.js n=100000 path='withscheme' href='percent'                                                                     0.30 %       ±0.88% ±1.17%  ±1.53%
url/url-resolve.js n=100000 path='withscheme' href='short'                                                              ***      5.04 %       ±0.78% ±1.05%  ±1.37%
url/url-resolve.js n=100000 path='withscheme' href='ws'                                                                          0.38 %       ±0.39% ±0.52%  ±0.68%
url/url-searchparams-append.js n=1000 type='URL'                                                                                -2.17 %       ±3.60% ±4.80%  ±6.24%
url/url-searchparams-append.js n=1000 type='URLSearchParams'                                                                    -0.47 %       ±3.62% ±4.82%  ±6.27%
url/url-searchparams-append.js n=1000000 type='URL'                                                                             -1.57 %       ±4.71% ±6.27%  ±8.19%
url/url-searchparams-append.js n=1000000 type='URLSearchParams'                                                                 -1.15 %       ±5.84% ±7.77% ±10.12%
url/url-searchparams-creation.js n=1000000 inputType='iterable' type='array'                                             **     -0.88 %       ±0.65% ±0.86%  ±1.12%
url/url-searchparams-creation.js n=1000000 inputType='iterable' type='encodelast'                                               -0.66 %       ±0.95% ±1.26%  ±1.66%
url/url-searchparams-creation.js n=1000000 inputType='iterable' type='encodemany'                                               -0.61 %       ±1.19% ±1.58%  ±2.06%
url/url-searchparams-creation.js n=1000000 inputType='iterable' type='multiprimitives'                                          -0.87 %       ±1.26% ±1.68%  ±2.19%
url/url-searchparams-creation.js n=1000000 inputType='iterable' type='noencode'                                                  0.41 %       ±0.97% ±1.30%  ±1.70%
url/url-searchparams-creation.js n=1000000 inputType='object' type='array'                                                *      0.52 %       ±0.47% ±0.63%  ±0.82%
url/url-searchparams-creation.js n=1000000 inputType='object' type='encodelast'                                         ***     -2.45 %       ±0.76% ±1.01%  ±1.32%
url/url-searchparams-creation.js n=1000000 inputType='object' type='encodemany'                                         ***     -2.86 %       ±0.82% ±1.09%  ±1.42%
url/url-searchparams-creation.js n=1000000 inputType='object' type='multiprimitives'                                    ***     -1.55 %       ±0.61% ±0.81%  ±1.06%
url/url-searchparams-creation.js n=1000000 inputType='object' type='noencode'                                           ***     -3.25 %       ±0.75% ±1.00%  ±1.30%
url/url-searchparams-creation.js n=1000000 inputType='string' type='array'                                                      -0.34 %       ±0.67% ±0.89%  ±1.16%
url/url-searchparams-creation.js n=1000000 inputType='string' type='encodelast'                                                 -0.16 %       ±0.75% ±0.99%  ±1.29%
url/url-searchparams-creation.js n=1000000 inputType='string' type='encodemany'                                                 -0.31 %       ±0.80% ±1.07%  ±1.39%
url/url-searchparams-creation.js n=1000000 inputType='string' type='multiprimitives'                                             0.02 %       ±0.69% ±0.92%  ±1.19%
url/url-searchparams-creation.js n=1000000 inputType='string' type='noencode'                                                    0.12 %       ±0.54% ±0.72%  ±0.94%
url/url-searchparams-iteration.js n=1000000 loopMethod='forEach'                                                                 4.38 %       ±6.46% ±8.60% ±11.20%
url/url-searchparams-iteration.js n=1000000 loopMethod='iterator'                                                               -0.60 %       ±0.79% ±1.06%  ±1.37%
url/url-searchparams-read.js n=20000000 param='nonexistent' accessMethod='get'                                                   0.26 %       ±0.33% ±0.43%  ±0.56%
url/url-searchparams-read.js n=20000000 param='nonexistent' accessMethod='getAll'                                               -0.13 %       ±0.59% ±0.78%  ±1.02%
url/url-searchparams-read.js n=20000000 param='nonexistent' accessMethod='has'                                                  -0.31 %       ±0.56% ±0.75%  ±0.98%
url/url-searchparams-read.js n=20000000 param='one' accessMethod='get'                                                           0.33 %       ±0.74% ±0.99%  ±1.29%
url/url-searchparams-read.js n=20000000 param='one' accessMethod='getAll'                                                        0.25 %       ±1.01% ±1.34%  ±1.75%
url/url-searchparams-read.js n=20000000 param='one' accessMethod='has'                                                           0.08 %       ±0.66% ±0.88%  ±1.15%
url/url-searchparams-read.js n=20000000 param='three' accessMethod='get'                                                        -0.06 %       ±0.73% ±0.97%  ±1.26%
url/url-searchparams-read.js n=20000000 param='three' accessMethod='getAll'                                                      0.67 %       ±0.88% ±1.17%  ±1.52%
url/url-searchparams-read.js n=20000000 param='three' accessMethod='has'                                                        -0.22 %       ±0.62% ±0.82%  ±1.07%
url/url-searchparams-read.js n=20000000 param='two' accessMethod='get'                                                          -0.95 %       ±1.32% ±1.75%  ±2.28%
url/url-searchparams-read.js n=20000000 param='two' accessMethod='getAll'                                                       -0.04 %       ±0.57% ±0.76%  ±0.99%
url/url-searchparams-read.js n=20000000 param='two' accessMethod='has'                                                    *     -1.70 %       ±1.51% ±2.02%  ±2.64%
url/url-searchparams-sort.js n=1000000 type='almostsorted'                                                                      -0.03 %       ±1.92% ±2.56%  ±3.33%
url/url-searchparams-sort.js n=1000000 type='empty'                                                                             -1.76 %       ±2.67% ±3.55%  ±4.62%
url/url-searchparams-sort.js n=1000000 type='long'                                                                               0.21 %       ±0.80% ±1.07%  ±1.39%
url/url-searchparams-sort.js n=1000000 type='random'                                                                            -1.15 %       ±2.00% ±2.67%  ±3.48%
url/url-searchparams-sort.js n=1000000 type='reversed'                                                                           1.40 %       ±2.09% ±2.79%  ±3.65%
url/url-searchparams-sort.js n=1000000 type='short'                                                                             -3.19 %       ±3.47% ±4.62%  ±6.01%
url/url-searchparams-sort.js n=1000000 type='sorted'                                                                            -0.58 %       ±1.70% ±2.27%  ±2.95%
url/url-searchparams-sort.js n=1000000 type='wpt'                                                                               -0.84 %       ±1.73% ±2.30%  ±3.00%
url/url-searchparams-toString.js n=1000000 inputType='iterable' type='array'                                              *     -0.59 %       ±0.51% ±0.68%  ±0.89%
url/url-searchparams-toString.js n=1000000 inputType='iterable' type='encodelast'                                                0.18 %       ±0.47% ±0.63%  ±0.82%
url/url-searchparams-toString.js n=1000000 inputType='iterable' type='encodemany'                                                0.42 %       ±0.47% ±0.62%  ±0.81%
url/url-searchparams-toString.js n=1000000 inputType='iterable' type='multiprimitives'                                          -0.31 %       ±0.57% ±0.75%  ±0.98%
url/url-searchparams-toString.js n=1000000 inputType='iterable' type='noencode'                                                 -0.47 %       ±0.52% ±0.70%  ±0.91%
url/url-searchparams-toString.js n=1000000 inputType='object' type='array'                                                      -0.06 %       ±0.65% ±0.86%  ±1.12%
url/url-searchparams-toString.js n=1000000 inputType='object' type='encodelast'                                                  0.04 %       ±0.43% ±0.57%  ±0.74%
url/url-searchparams-toString.js n=1000000 inputType='object' type='encodemany'                                         ***      1.00 %       ±0.47% ±0.62%  ±0.81%
url/url-searchparams-toString.js n=1000000 inputType='object' type='multiprimitives'                                      *      0.57 %       ±0.50% ±0.67%  ±0.87%
url/url-searchparams-toString.js n=1000000 inputType='object' type='noencode'                                           ***      1.13 %       ±0.61% ±0.82%  ±1.06%
url/url-searchparams-toString.js n=1000000 inputType='string' type='array'                                                      -0.69 %       ±1.04% ±1.39%  ±1.80%
url/url-searchparams-toString.js n=1000000 inputType='string' type='encodelast'                                          **      0.58 %       ±0.34% ±0.45%  ±0.59%
url/url-searchparams-toString.js n=1000000 inputType='string' type='encodemany'                                         ***      0.77 %       ±0.43% ±0.57%  ±0.74%
url/url-searchparams-toString.js n=1000000 inputType='string' type='multiprimitives'                                    ***      1.26 %       ±0.50% ±0.66%  ±0.87%
url/url-searchparams-toString.js n=1000000 inputType='string' type='noencode'                                           ***      0.96 %       ±0.51% ±0.67%  ±0.88%
url/url-searchparams-update.js n=1000000 property='hash' searchParams='false'                                             *      1.03 %       ±0.95% ±1.26%  ±1.65%
url/url-searchparams-update.js n=1000000 property='hash' searchParams='true'                                            ***     -3.80 %       ±0.42% ±0.56%  ±0.73%
url/url-searchparams-update.js n=1000000 property='pathname' searchParams='false'                                        **     -1.01 %       ±0.68% ±0.90%  ±1.17%
url/url-searchparams-update.js n=1000000 property='pathname' searchParams='true'                                        ***     -1.60 %       ±0.32% ±0.43%  ±0.56%
url/url-searchparams-update.js n=1000000 property='search' searchParams='false'                                         ***      2.10 %       ±0.67% ±0.89%  ±1.17%
url/url-searchparams-update.js n=1000000 property='search' searchParams='true'                                          ***     -1.61 %       ±0.74% ±0.99%  ±1.29%
url/whatwg-url-canParse.js n=1000000 type='auth'                                                                                 0.05 %       ±0.89% ±1.18%  ±1.54%
url/whatwg-url-canParse.js n=1000000 type='dot'                                                                                 -0.02 %       ±1.60% ±2.14%  ±2.78%
url/whatwg-url-canParse.js n=1000000 type='file'                                                                                -0.92 %       ±2.16% ±2.87%  ±3.74%
url/whatwg-url-canParse.js n=1000000 type='idn'                                                                         ***     -1.90 %       ±0.34% ±0.46%  ±0.60%
url/whatwg-url-canParse.js n=1000000 type='javascript'                                                                          -0.65 %       ±1.17% ±1.55%  ±2.02%
url/whatwg-url-canParse.js n=1000000 type='long'                                                                          *     -0.90 %       ±0.87% ±1.15%  ±1.50%
url/whatwg-url-canParse.js n=1000000 type='percent'                                                                             -0.22 %       ±0.39% ±0.51%  ±0.67%
url/whatwg-url-canParse.js n=1000000 type='short'                                                                               -0.13 %       ±1.76% ±2.34%  ±3.05%
url/whatwg-url-canParse.js n=1000000 type='ws'                                                                                  -0.85 %       ±1.20% ±1.60%  ±2.10%
url/whatwg-url-get-prop.js e=1 type='auth'                                                                                       1.62 %       ±2.32% ±3.09%  ±4.02%
url/whatwg-url-get-prop.js e=1 type='dot'                                                                                 *      2.76 %       ±2.45% ±3.26%  ±4.25%
url/whatwg-url-get-prop.js e=1 type='file'                                                                                *      3.82 %       ±2.95% ±3.95%  ±5.17%
url/whatwg-url-get-prop.js e=1 type='idn'                                                                                **      4.32 %       ±2.58% ±3.43%  ±4.46%
url/whatwg-url-get-prop.js e=1 type='javascript'                                                                                 2.33 %       ±3.20% ±4.26%  ±5.55%
url/whatwg-url-get-prop.js e=1 type='long'                                                                              ***      5.66 %       ±3.01% ±4.02%  ±5.25%
url/whatwg-url-get-prop.js e=1 type='percent'                                                                             *      3.88 %       ±3.41% ±4.55%  ±5.94%
url/whatwg-url-get-prop.js e=1 type='short'                                                                              **      5.43 %       ±3.18% ±4.23%  ±5.50%
url/whatwg-url-get-prop.js e=1 type='wpt'                                                                                       -0.63 %       ±4.43% ±5.90%  ±7.70%
url/whatwg-url-get-prop.js e=1 type='ws'                                                                                 **      2.95 %       ±2.14% ±2.85%  ±3.72%
url/whatwg-url-idna.js n=5000000 to='ascii' domain='all'                                                                 **     -0.34 %       ±0.24% ±0.32%  ±0.42%
url/whatwg-url-idna.js n=5000000 to='ascii' domain='empty'                                                                       0.92 %       ±1.25% ±1.66%  ±2.18%
url/whatwg-url-idna.js n=5000000 to='ascii' domain='none'                                                                **     -0.25 %       ±0.18% ±0.24%  ±0.31%
url/whatwg-url-idna.js n=5000000 to='ascii' domain='nonstring'                                                                  -0.52 %       ±0.76% ±1.01%  ±1.32%
url/whatwg-url-idna.js n=5000000 to='ascii' domain='some'                                                                       -0.02 %       ±0.45% ±0.60%  ±0.79%
url/whatwg-url-idna.js n=5000000 to='unicode' domain='all'                                                              ***      0.98 %       ±0.10% ±0.13%  ±0.18%
url/whatwg-url-idna.js n=5000000 to='unicode' domain='empty'                                                                    -0.04 %       ±1.10% ±1.46%  ±1.90%
url/whatwg-url-idna.js n=5000000 to='unicode' domain='none'                                                               *      0.16 %       ±0.14% ±0.19%  ±0.24%
url/whatwg-url-idna.js n=5000000 to='unicode' domain='nonstring'                                                                 0.33 %       ±0.57% ±0.76%  ±0.99%
url/whatwg-url-idna.js n=5000000 to='unicode' domain='some'                                                                     -0.17 %       ±0.29% ±0.39%  ±0.51%
url/whatwg-url-parse.js e=1 type='auth' withBase='false'                                                                ***      8.06 %       ±3.04% ±4.05%  ±5.28%
url/whatwg-url-parse.js e=1 type='auth' withBase='true'                                                                         -0.44 %       ±2.04% ±2.72%  ±3.54%
url/whatwg-url-parse.js e=1 type='dot' withBase='false'                                                                 ***     10.02 %       ±2.31% ±3.08%  ±4.02%
url/whatwg-url-parse.js e=1 type='dot' withBase='true'                                                                          -0.76 %       ±2.11% ±2.80%  ±3.65%
url/whatwg-url-parse.js e=1 type='file' withBase='false'                                                                ***      9.75 %       ±2.84% ±3.80%  ±4.97%
url/whatwg-url-parse.js e=1 type='file' withBase='true'                                                                         -1.57 %       ±3.12% ±4.18%  ±5.49%
url/whatwg-url-parse.js e=1 type='idn' withBase='false'                                                                 ***      5.56 %       ±2.12% ±2.84%  ±3.71%
url/whatwg-url-parse.js e=1 type='idn' withBase='true'                                                                          -0.32 %       ±2.97% ±3.97%  ±5.21%
url/whatwg-url-parse.js e=1 type='javascript' withBase='false'                                                          ***     10.79 %       ±2.87% ±3.82%  ±4.99%
url/whatwg-url-parse.js e=1 type='javascript' withBase='true'                                                                    0.02 %       ±1.97% ±2.63%  ±3.44%
url/whatwg-url-parse.js e=1 type='long' withBase='false'                                                                 **      5.24 %       ±3.20% ±4.28%  ±5.61%
url/whatwg-url-parse.js e=1 type='long' withBase='true'                                                                         -0.63 %       ±5.13% ±6.83%  ±8.90%
url/whatwg-url-parse.js e=1 type='percent' withBase='false'                                                             ***      9.22 %       ±1.72% ±2.30%  ±2.99%
url/whatwg-url-parse.js e=1 type='percent' withBase='true'                                                                      -1.06 %       ±2.76% ±3.69%  ±4.83%
url/whatwg-url-parse.js e=1 type='short' withBase='false'                                                               ***     10.94 %       ±2.85% ±3.80%  ±4.94%
url/whatwg-url-parse.js e=1 type='short' withBase='true'                                                                         0.83 %       ±1.52% ±2.02%  ±2.62%
url/whatwg-url-parse.js e=1 type='wpt' withBase='false'                                                                         -2.29 %       ±2.69% ±3.59%  ±4.67%
url/whatwg-url-parse.js e=1 type='wpt' withBase='true'                                                                          -1.80 %       ±2.98% ±3.98%  ±5.21%
url/whatwg-url-parse.js e=1 type='ws' withBase='false'                                                                  ***      8.28 %       ±3.51% ±4.68%  ±6.11%
url/whatwg-url-parse.js e=1 type='ws' withBase='true'                                                                     *      1.85 %       ±1.74% ±2.31%  ±3.01%
url/whatwg-url-properties.js prop='hash' e=1 type='wpt' withBase='false'                                                         0.69 %       ±3.67% ±4.91%  ±6.46%
url/whatwg-url-properties.js prop='hash' e=1 type='wpt' withBase='true'                                                          4.18 %       ±4.60% ±6.14%  ±8.03%
url/whatwg-url-properties.js prop='host' e=1 type='wpt' withBase='false'                                                        -1.46 %       ±3.47% ±4.66%  ±6.14%
url/whatwg-url-properties.js prop='host' e=1 type='wpt' withBase='true'                                                          1.85 %       ±3.00% ±4.01%  ±5.23%
url/whatwg-url-properties.js prop='hostname' e=1 type='wpt' withBase='false'                                                     0.58 %       ±2.57% ±3.43%  ±4.48%
url/whatwg-url-properties.js prop='hostname' e=1 type='wpt' withBase='true'                                                     -1.56 %       ±3.10% ±4.14%  ±5.42%
url/whatwg-url-properties.js prop='href' e=1 type='wpt' withBase='false'                                                        -0.33 %       ±4.10% ±5.46%  ±7.12%
url/whatwg-url-properties.js prop='href' e=1 type='wpt' withBase='true'                                                         -2.21 %       ±5.80% ±7.73% ±10.08%
url/whatwg-url-properties.js prop='origin' e=1 type='wpt' withBase='false'                                                       0.41 %       ±3.91% ±5.22%  ±6.83%
url/whatwg-url-properties.js prop='origin' e=1 type='wpt' withBase='true'                                               ***     13.02 %       ±3.87% ±5.16%  ±6.74%
url/whatwg-url-properties.js prop='password' e=1 type='wpt' withBase='false'                                                    -1.38 %       ±3.63% ±4.86%  ±6.40%
url/whatwg-url-properties.js prop='password' e=1 type='wpt' withBase='true'                                                      1.17 %       ±3.64% ±4.86%  ±6.36%
url/whatwg-url-properties.js prop='pathname' e=1 type='wpt' withBase='false'                                                     1.60 %       ±3.32% ±4.43%  ±5.80%
url/whatwg-url-properties.js prop='pathname' e=1 type='wpt' withBase='true'                                                      1.37 %       ±3.67% ±4.88%  ±6.36%
url/whatwg-url-properties.js prop='port' e=1 type='wpt' withBase='false'                                                         0.32 %       ±1.47% ±1.97%  ±2.57%
url/whatwg-url-properties.js prop='port' e=1 type='wpt' withBase='true'                                                         -0.43 %       ±3.46% ±4.62%  ±6.03%
url/whatwg-url-properties.js prop='protocol' e=1 type='wpt' withBase='false'                                                     1.34 %       ±1.53% ±2.04%  ±2.65%
url/whatwg-url-properties.js prop='protocol' e=1 type='wpt' withBase='true'                                                     -0.84 %       ±3.23% ±4.30%  ±5.60%
url/whatwg-url-properties.js prop='search' e=1 type='wpt' withBase='false'                                                       2.52 %       ±3.34% ±4.44%  ±5.79%
url/whatwg-url-properties.js prop='search' e=1 type='wpt' withBase='true'                                                       -1.69 %       ±4.63% ±6.17%  ±8.06%
url/whatwg-url-properties.js prop='searchParams' e=1 type='wpt' withBase='false'                                          *     -2.73 %       ±2.20% ±2.93%  ±3.81%
url/whatwg-url-properties.js prop='searchParams' e=1 type='wpt' withBase='true'                                                 -3.95 %       ±4.69% ±6.25%  ±8.17%
url/whatwg-url-properties.js prop='username' e=1 type='wpt' withBase='false'                                                     2.09 %       ±2.12% ±2.82%  ±3.68%
url/whatwg-url-properties.js prop='username' e=1 type='wpt' withBase='true'                                                     -1.85 %       ±4.06% ±5.42%  ±7.09%
url/whatwg-url-to-and-from-path.js n=5000000 input='/dev/null?key=param&bool' method='pathToFileURL'                    ***     20.19 %       ±0.59% ±0.79%  ±1.04%
url/whatwg-url-to-and-from-path.js n=5000000 input='/dev/null?key=param&bool#hash' method='pathToFileURL'               ***     34.59 %       ±0.58% ±0.78%  ±1.02%
url/whatwg-url-to-and-from-path.js n=5000000 input='/dev/null' method='pathToFileURL'                                   ***     20.14 %       ±0.81% ±1.09%  ±1.45%
url/whatwg-url-to-and-from-path.js n=5000000 input='file:///dev/null?key=param&bool' method='fileURLToPath'              **      0.75 %       ±0.48% ±0.63%  ±0.83%
url/whatwg-url-to-and-from-path.js n=5000000 input='file:///dev/null?key=param&bool' method='pathToFileURL'             ***      6.50 %       ±0.37% ±0.49%  ±0.64%
url/whatwg-url-to-and-from-path.js n=5000000 input='file:///dev/null?key=param&bool#hash' method='fileURLToPath'        ***     -2.10 %       ±0.78% ±1.05%  ±1.39%
url/whatwg-url-to-and-from-path.js n=5000000 input='file:///dev/null?key=param&bool#hash' method='pathToFileURL'        ***     18.66 %       ±0.26% ±0.34%  ±0.45%
url/whatwg-url-to-and-from-path.js n=5000000 input='file:///dev/null' method='fileURLToPath'                                     0.34 %       ±0.59% ±0.79%  ±1.03%
url/whatwg-url-to-and-from-path.js n=5000000 input='file:///dev/null' method='pathToFileURL'                            ***      2.46 %       ±0.22% ±0.30%  ±0.39%
url/whatwg-url-validity.js e=100000 type='invalid'                                                                               0.22 %       ±0.44% ±0.58%  ±0.76%
url/whatwg-url-validity.js e=100000 type='valid'                                                                                -0.64 %       ±1.64% ±2.19%  ±2.85%

@aduh95
Copy link
Contributor Author

aduh95 commented Oct 28, 2024

I find it puzzling that this PR shows a slow down on some seemingly unrelated benchmarks, however I think it's well worth the tradeoff given the overall perf improvements. Anyway, it's ready for reviews

@aduh95 aduh95 added author ready PRs that have at least one approval, no pending requests for changes, and a CI started. request-ci Add this label to start a Jenkins CI on a PR. labels Oct 29, 2024
@github-actions github-actions bot removed the request-ci Add this label to start a Jenkins CI on a PR. label Oct 29, 2024
@nodejs-github-bot
Copy link
Collaborator

@nodejs-github-bot
Copy link
Collaborator

@aduh95 aduh95 added the commit-queue Add this label to land a pull request using GitHub Actions. label Oct 31, 2024
@nodejs-github-bot nodejs-github-bot removed the commit-queue Add this label to land a pull request using GitHub Actions. label Oct 31, 2024
@nodejs-github-bot nodejs-github-bot merged commit e2bd64d into nodejs:main Oct 31, 2024
63 checks passed
@nodejs-github-bot
Copy link
Collaborator

Landed in e2bd64d

@aduh95 aduh95 deleted the path-to-native-url branch October 31, 2024 23:42
RafaelGSS pushed a commit that referenced this pull request Nov 1, 2024
PR-URL: #55476
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
louwers pushed a commit to louwers/node that referenced this pull request Nov 2, 2024
PR-URL: nodejs#55476
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
author ready PRs that have at least one approval, no pending requests for changes, and a CI started. c++ Issues and PRs that require attention from people who are familiar with C++. needs-benchmark-ci PR that need a benchmark CI run. needs-ci PRs that need a full CI run. whatwg-url Issues and PRs related to the WHATWG URL implementation.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants