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: remove \t \n \r in url.parse() similar to WHATWG #45116

Merged
merged 2 commits into from
Oct 24, 2022

Conversation

Trott
Copy link
Member

@Trott Trott commented Oct 22, 2022

WHATWG URL removes tab, new line, and carraige return characters before processing URL strings. To narrow the differences between WHATWG URL and url.parse(), and thus reduce opportunities for host spoofing etc. due to differences between the two APIs, let's do the same with url.parse().

WHATWG URL removes tab, new line, and carraige return characters before
processing URL strings. To narrow the differences between WHATWG URL and
url.parse(), and thus reduce opportunities for host spoofing etc. due to
differences between the two APIs, let's do the same with url.parse().
@nodejs-github-bot nodejs-github-bot added needs-ci PRs that need a full CI run. url Issues and PRs related to the legacy built-in url module. labels Oct 22, 2022
@Trott
Copy link
Member Author

Trott commented Oct 22, 2022

@Trott
Copy link
Member Author

Trott commented Oct 22, 2022

These benchmark results seem tolerable to me. (Perhaps there is an opportunity for improvement by ignoring the characters as we step through the string later rather than running .replace() first.)

confidence improvement accuracy (*)    (**)   (***)
02:15:01 url/legacy-vs-whatwg-url-get-prop.js e=1 method='legacy' type='auth'                                                     -0.05 %       ±9.45% ±12.62% ±16.53%
02:15:01 url/legacy-vs-whatwg-url-get-prop.js e=1 method='legacy' type='dot'                                                       0.73 %       ±9.95% ±13.26% ±17.31%
02:15:01 url/legacy-vs-whatwg-url-get-prop.js e=1 method='legacy' type='file'                                                      3.84 %       ±9.10% ±12.10% ±15.75%
02:15:01 url/legacy-vs-whatwg-url-get-prop.js e=1 method='legacy' type='idn'                                                *     -9.38 %       ±8.63% ±11.49% ±14.97%
02:15:01 url/legacy-vs-whatwg-url-get-prop.js e=1 method='legacy' type='javascript'                                               -4.34 %       ±7.79% ±10.40% ±13.61%
02:15:01 url/legacy-vs-whatwg-url-get-prop.js e=1 method='legacy' type='long'                                                      2.12 %       ±7.41%  ±9.86% ±12.84%
02:15:01 url/legacy-vs-whatwg-url-get-prop.js e=1 method='legacy' type='percent'                                                   1.68 %       ±9.15% ±12.19% ±15.88%
02:15:01 url/legacy-vs-whatwg-url-get-prop.js e=1 method='legacy' type='short'                                                    -1.22 %       ±9.85% ±13.11% ±17.07%
02:15:01 url/legacy-vs-whatwg-url-get-prop.js e=1 method='legacy' type='wpt'                                                       3.09 %       ±6.70%  ±8.92% ±11.60%
02:15:01 url/legacy-vs-whatwg-url-get-prop.js e=1 method='legacy' type='ws'                                                        0.46 %       ±8.26% ±11.02% ±14.39%
02:15:01 url/legacy-vs-whatwg-url-get-prop.js e=1 method='whatwg' type='auth'                                                      1.26 %       ±8.24% ±10.97% ±14.29%
02:15:01 url/legacy-vs-whatwg-url-get-prop.js e=1 method='whatwg' type='dot'                                                       3.30 %       ±6.56%  ±8.73% ±11.39%
02:15:01 url/legacy-vs-whatwg-url-get-prop.js e=1 method='whatwg' type='file'                                                      0.63 %       ±4.11%  ±5.47%  ±7.12%
02:15:01 url/legacy-vs-whatwg-url-get-prop.js e=1 method='whatwg' type='idn'                                                       2.12 %       ±7.71% ±10.28% ±13.41%
02:15:01 url/legacy-vs-whatwg-url-get-prop.js e=1 method='whatwg' type='javascript'                                               -2.06 %       ±7.29%  ±9.70% ±12.63%
02:15:01 url/legacy-vs-whatwg-url-get-prop.js e=1 method='whatwg' type='long'                                                     -3.88 %       ±4.82%  ±6.42%  ±8.36%
02:15:01 url/legacy-vs-whatwg-url-get-prop.js e=1 method='whatwg' type='percent'                                            *      7.43 %       ±6.71%  ±8.95% ±11.71%
02:15:01 url/legacy-vs-whatwg-url-get-prop.js e=1 method='whatwg' type='short'                                                     3.84 %       ±6.43%  ±8.59% ±11.26%
02:15:01 url/legacy-vs-whatwg-url-get-prop.js e=1 method='whatwg' type='wpt'                                                      -2.53 %       ±7.35%  ±9.78% ±12.73%
02:15:01 url/legacy-vs-whatwg-url-get-prop.js e=1 method='whatwg' type='ws'                                                        1.65 %       ±5.80%  ±7.72% ±10.05%
02:15:01 url/legacy-vs-whatwg-url-parse.js method='legacy' e=1 type='auth' withBase='false'                                       -2.67 %       ±8.75% ±11.68% ±15.26%
02:15:01 url/legacy-vs-whatwg-url-parse.js method='legacy' e=1 type='auth' withBase='true'                                         1.83 %       ±7.80% ±10.39% ±13.54%
02:15:01 url/legacy-vs-whatwg-url-parse.js method='legacy' e=1 type='dot' withBase='false'                                        -4.78 %       ±5.34%  ±7.12%  ±9.31%
02:15:01 url/legacy-vs-whatwg-url-parse.js method='legacy' e=1 type='dot' withBase='true'                                         -3.86 %       ±7.11%  ±9.46% ±12.31%
02:15:01 url/legacy-vs-whatwg-url-parse.js method='legacy' e=1 type='file' withBase='false'                                       -7.46 %       ±7.97% ±10.61% ±13.82%
02:15:01 url/legacy-vs-whatwg-url-parse.js method='legacy' e=1 type='file' withBase='true'                                        -2.40 %       ±6.77%  ±9.01% ±11.73%
02:15:01 url/legacy-vs-whatwg-url-parse.js method='legacy' e=1 type='idn' withBase='false'                                        -0.33 %       ±8.86% ±11.79% ±15.37%
02:15:01 url/legacy-vs-whatwg-url-parse.js method='legacy' e=1 type='idn' withBase='true'                                          2.27 %       ±6.59%  ±8.78% ±11.46%
02:15:01 url/legacy-vs-whatwg-url-parse.js method='legacy' e=1 type='javascript' withBase='false'                                 -2.35 %       ±6.79%  ±9.04% ±11.77%
02:15:01 url/legacy-vs-whatwg-url-parse.js method='legacy' e=1 type='javascript' withBase='true'                                  -4.76 %       ±5.86%  ±7.80% ±10.17%
02:15:01 url/legacy-vs-whatwg-url-parse.js method='legacy' e=1 type='long' withBase='false'                                        0.61 %       ±6.23%  ±8.29% ±10.78%
02:15:01 url/legacy-vs-whatwg-url-parse.js method='legacy' e=1 type='long' withBase='true'                                        -2.19 %       ±6.17%  ±8.22% ±10.70%
02:15:01 url/legacy-vs-whatwg-url-parse.js method='legacy' e=1 type='percent' withBase='false'                              *     -8.40 %       ±6.77%  ±9.02% ±11.77%
02:15:01 url/legacy-vs-whatwg-url-parse.js method='legacy' e=1 type='percent' withBase='true'                                     -3.19 %       ±7.61% ±10.12% ±13.18%
02:15:01 url/legacy-vs-whatwg-url-parse.js method='legacy' e=1 type='short' withBase='false'                                      -5.22 %       ±6.15%  ±8.18% ±10.65%
02:15:01 url/legacy-vs-whatwg-url-parse.js method='legacy' e=1 type='short' withBase='true'                                 *     -7.65 %       ±7.05%  ±9.40% ±12.29%
02:15:01 url/legacy-vs-whatwg-url-parse.js method='legacy' e=1 type='wpt' withBase='false'                                        -4.89 %       ±6.48%  ±8.63% ±11.25%
02:15:01 url/legacy-vs-whatwg-url-parse.js method='legacy' e=1 type='wpt' withBase='true'                                          2.80 %       ±6.30%  ±8.41% ±11.00%
02:15:01 url/legacy-vs-whatwg-url-parse.js method='legacy' e=1 type='ws' withBase='false'                                         -3.56 %       ±6.41%  ±8.54% ±11.15%
02:15:01 url/legacy-vs-whatwg-url-parse.js method='legacy' e=1 type='ws' withBase='true'                                          -4.95 %       ±6.43%  ±8.56% ±11.13%
02:15:01 url/legacy-vs-whatwg-url-parse.js method='whatwg' e=1 type='auth' withBase='false'                                       -5.17 %       ±7.15%  ±9.56% ±12.51%
02:15:01 url/legacy-vs-whatwg-url-parse.js method='whatwg' e=1 type='auth' withBase='true'                                         1.99 %       ±8.03% ±10.69% ±13.92%
02:15:01 url/legacy-vs-whatwg-url-parse.js method='whatwg' e=1 type='dot' withBase='false'                                         1.12 %       ±8.63% ±11.49% ±14.95%
02:15:01 url/legacy-vs-whatwg-url-parse.js method='whatwg' e=1 type='dot' withBase='true'                                          8.03 %      ±10.26% ±13.75% ±18.10%
02:15:01 url/legacy-vs-whatwg-url-parse.js method='whatwg' e=1 type='file' withBase='false'                                       -6.88 %       ±7.62% ±10.15% ±13.23%
02:15:01 url/legacy-vs-whatwg-url-parse.js method='whatwg' e=1 type='file' withBase='true'                                        -0.68 %       ±4.67%  ±6.21%  ±8.08%
02:15:01 url/legacy-vs-whatwg-url-parse.js method='whatwg' e=1 type='idn' withBase='false'                                        -4.01 %       ±8.48% ±11.32% ±14.80%
02:15:01 url/legacy-vs-whatwg-url-parse.js method='whatwg' e=1 type='idn' withBase='true'                                         -0.03 %       ±7.10%  ±9.46% ±12.33%
02:15:01 url/legacy-vs-whatwg-url-parse.js method='whatwg' e=1 type='javascript' withBase='false'                                 -5.06 %       ±6.63%  ±8.82% ±11.49%
02:15:01 url/legacy-vs-whatwg-url-parse.js method='whatwg' e=1 type='javascript' withBase='true'                                   4.70 %       ±5.54%  ±7.40%  ±9.71%
02:15:01 url/legacy-vs-whatwg-url-parse.js method='whatwg' e=1 type='long' withBase='false'                                        0.94 %       ±5.75%  ±7.65%  ±9.95%
02:15:01 url/legacy-vs-whatwg-url-parse.js method='whatwg' e=1 type='long' withBase='true'                                        -4.96 %       ±7.44%  ±9.92% ±12.94%
02:15:01 url/legacy-vs-whatwg-url-parse.js method='whatwg' e=1 type='percent' withBase='false'                                     4.96 %       ±8.20% ±10.91% ±14.20%
02:15:01 url/legacy-vs-whatwg-url-parse.js method='whatwg' e=1 type='percent' withBase='true'                                      1.71 %       ±7.83% ±10.42% ±13.57%
02:15:01 url/legacy-vs-whatwg-url-parse.js method='whatwg' e=1 type='short' withBase='false'                                      -4.15 %       ±8.27% ±11.01% ±14.35%
02:15:01 url/legacy-vs-whatwg-url-parse.js method='whatwg' e=1 type='short' withBase='true'                                 *      5.45 %       ±5.32%  ±7.09%  ±9.26%
02:15:01 url/legacy-vs-whatwg-url-parse.js method='whatwg' e=1 type='wpt' withBase='false'                                        -3.97 %       ±6.59%  ±8.81% ±11.54%
02:15:01 url/legacy-vs-whatwg-url-parse.js method='whatwg' e=1 type='wpt' withBase='true'                                         -1.69 %       ±7.40%  ±9.85% ±12.83%
02:15:01 url/legacy-vs-whatwg-url-parse.js method='whatwg' e=1 type='ws' withBase='false'                                          2.00 %       ±7.11%  ±9.47% ±12.32%
02:15:01 url/legacy-vs-whatwg-url-parse.js method='whatwg' e=1 type='ws' withBase='true'                                           2.58 %       ±5.93%  ±7.90% ±10.30%
02:15:01 url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='legacy' searchParam='altspaces'                         -0.84 %       ±1.78%  ±2.37%  ±3.08%
02:15:01 url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='legacy' searchParam='encodefake'                        -4.26 %       ±7.59% ±10.10% ±13.16%
02:15:01 url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='legacy' searchParam='encodelast'                        -2.29 %       ±3.68%  ±4.94%  ±6.52%
02:15:01 url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='legacy' searchParam='encodemany'                  *     -2.89 %       ±2.79%  ±3.73%  ±4.89%
02:15:01 url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='legacy' searchParam='manyblankpairs'                     0.46 %       ±3.92%  ±5.21%  ±6.79%
02:15:01 url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='legacy' searchParam='manypairs'                          0.77 %       ±2.88%  ±3.83%  ±4.99%
02:15:01 url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='legacy' searchParam='multicharsep'                       0.39 %       ±2.20%  ±2.93%  ±3.81%
02:15:01 url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='legacy' searchParam='multivalue'                        -1.07 %       ±3.15%  ±4.21%  ±5.53%
02:15:01 url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='legacy' searchParam='multivaluemany'                     0.26 %       ±1.52%  ±2.02%  ±2.63%
02:15:01 url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='legacy' searchParam='noencode'                           2.14 %       ±2.78%  ±3.71%  ±4.84%
02:15:01 url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='whatwg' searchParam='altspaces'                          4.56 %       ±7.20%  ±9.62% ±12.59%
02:15:01 url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='whatwg' searchParam='encodefake'                         1.48 %       ±8.84% ±11.76% ±15.31%
02:15:01 url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='whatwg' searchParam='encodelast'                         0.18 %       ±3.42%  ±4.56%  ±5.96%
02:15:01 url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='whatwg' searchParam='encodemany'                        -0.69 %       ±3.16%  ±4.21%  ±5.50%
02:15:01 url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='whatwg' searchParam='manyblankpairs'                    -0.52 %       ±3.62%  ±4.85%  ±6.37%
02:15:01 url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='whatwg' searchParam='manypairs'                          2.76 %       ±5.68%  ±7.56%  ±9.84%
02:15:01 url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='whatwg' searchParam='multicharsep'                      -3.08 %       ±7.36%  ±9.80% ±12.78%
02:15:01 url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='whatwg' searchParam='multivalue'                         3.42 %       ±8.10% ±10.78% ±14.04%
02:15:01 url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='whatwg' searchParam='multivaluemany'                     0.89 %       ±3.85%  ±5.14%  ±6.72%
02:15:01 url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='whatwg' searchParam='noencode'                           6.43 %       ±8.22% ±11.01% ±14.48%
02:15:01 url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='legacy' searchParam='altspaces'                     -1.47 %       ±1.69%  ±2.25%  ±2.93%
02:15:01 url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='legacy' searchParam='encodefake'              *     -3.07 %       ±2.82%  ±3.76%  ±4.91%
02:15:01 url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='legacy' searchParam='encodelast'                    -0.81 %       ±5.34%  ±7.11%  ±9.26%
02:15:01 url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='legacy' searchParam='encodemany'                     3.52 %       ±6.87%  ±9.17% ±12.02%
02:15:01 url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='legacy' searchParam='manyblankpairs'                -9.05 %      ±10.87% ±14.63% ±19.36%
02:15:01 url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='legacy' searchParam='manypairs'                     -1.90 %       ±3.40%  ±4.55%  ±5.99%
02:15:01 url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='legacy' searchParam='multicharsep'                  -0.90 %       ±2.04%  ±2.73%  ±3.57%
02:15:01 url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='legacy' searchParam='multivalue'                    -0.19 %       ±1.85%  ±2.46%  ±3.21%
02:15:01 url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='legacy' searchParam='multivaluemany'                -1.09 %       ±3.20%  ±4.30%  ±5.67%
02:15:01 url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='legacy' searchParam='noencode'                       4.10 %       ±5.81%  ±7.83% ±10.38%
02:15:01 url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='whatwg' searchParam='altspaces'                     -1.13 %       ±6.52%  ±8.67% ±11.29%
02:15:01 url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='whatwg' searchParam='encodefake'                    -0.86 %       ±7.36%  ±9.79% ±12.75%
02:15:01 url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='whatwg' searchParam='encodelast'                    -0.89 %       ±6.58%  ±8.76% ±11.41%
02:15:01 url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='whatwg' searchParam='encodemany'                     4.33 %       ±6.42%  ±8.64% ±11.45%
02:15:01 url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='whatwg' searchParam='manyblankpairs'                -1.83 %       ±3.55%  ±4.72%  ±6.15%
02:15:01 url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='whatwg' searchParam='manypairs'                      1.32 %       ±2.00%  ±2.67%  ±3.49%
02:15:01 url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='whatwg' searchParam='multicharsep'                  -4.80 %       ±6.20%  ±8.36% ±11.10%
02:15:01 url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='whatwg' searchParam='multivalue'                     1.20 %       ±5.14%  ±6.88%  ±9.05%
02:15:01 url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='whatwg' searchParam='multivaluemany'                 0.46 %       ±3.69%  ±4.93%  ±6.45%
02:15:01 url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='whatwg' searchParam='noencode'                      -0.25 %       ±0.94%  ±1.25%  ±1.63%
02:15:01 url/legacy-vs-whatwg-url-serialize.js e=1 method='legacy' type='auth'                                                     1.81 %       ±5.90%  ±7.86% ±10.23%
02:15:01 url/legacy-vs-whatwg-url-serialize.js e=1 method='legacy' type='dot'                                                      3.92 %       ±7.96% ±10.59% ±13.80%
02:15:01 url/legacy-vs-whatwg-url-serialize.js e=1 method='legacy' type='file'                                                    -3.35 %       ±6.50%  ±8.65% ±11.26%
02:15:01 url/legacy-vs-whatwg-url-serialize.js e=1 method='legacy' type='idn'                                                      1.50 %       ±5.68%  ±7.57%  ±9.87%
02:15:01 url/legacy-vs-whatwg-url-serialize.js e=1 method='legacy' type='javascript'                                               2.23 %       ±8.04% ±10.70% ±13.93%
02:15:01 url/legacy-vs-whatwg-url-serialize.js e=1 method='legacy' type='long'                                              *     -6.34 %       ±6.11%  ±8.13% ±10.59%
02:15:01 url/legacy-vs-whatwg-url-serialize.js e=1 method='legacy' type='percent'                                                  2.35 %       ±6.48%  ±8.62% ±11.22%
02:15:01 url/legacy-vs-whatwg-url-serialize.js e=1 method='legacy' type='short'                                                   -1.28 %       ±5.72%  ±7.62%  ±9.93%
02:15:01 url/legacy-vs-whatwg-url-serialize.js e=1 method='legacy' type='wpt'                                               *      7.06 %       ±6.41%  ±8.55% ±11.16%
02:15:01 url/legacy-vs-whatwg-url-serialize.js e=1 method='legacy' type='ws'                                                       0.85 %       ±6.01%  ±8.00% ±10.41%
02:15:01 url/legacy-vs-whatwg-url-serialize.js e=1 method='whatwg' type='auth'                                                     2.01 %       ±6.96%  ±9.27% ±12.08%
02:15:01 url/legacy-vs-whatwg-url-serialize.js e=1 method='whatwg' type='dot'                                               *     -6.28 %       ±5.66%  ±7.54%  ±9.83%
02:15:01 url/legacy-vs-whatwg-url-serialize.js e=1 method='whatwg' type='file'                                                    -3.01 %       ±6.05%  ±8.05% ±10.48%
02:15:01 url/legacy-vs-whatwg-url-serialize.js e=1 method='whatwg' type='idn'                                                     -4.57 %       ±5.95%  ±7.93% ±10.35%
02:15:01 url/legacy-vs-whatwg-url-serialize.js e=1 method='whatwg' type='javascript'                                              -1.41 %       ±6.14%  ±8.16% ±10.63%
02:15:01 url/legacy-vs-whatwg-url-serialize.js e=1 method='whatwg' type='long'                                                    -2.12 %       ±6.51%  ±8.67% ±11.30%
02:15:01 url/legacy-vs-whatwg-url-serialize.js e=1 method='whatwg' type='percent'                                                 -3.70 %       ±6.96%  ±9.29% ±12.16%
02:15:01 url/legacy-vs-whatwg-url-serialize.js e=1 method='whatwg' type='short'                                                    0.73 %       ±6.78%  ±9.02% ±11.74%
02:15:01 url/legacy-vs-whatwg-url-serialize.js e=1 method='whatwg' type='wpt'                                                      4.58 %       ±6.72%  ±8.94% ±11.64%
02:15:01 url/legacy-vs-whatwg-url-serialize.js e=1 method='whatwg' type='ws'                                                       1.97 %       ±6.58%  ±8.78% ±11.49%
02:15:01 url/url-format.js n=25000000 type='file'                                                                                  0.26 %       ±1.86%  ±2.48%  ±3.22%
02:15:01 url/url-format.js n=25000000 type='slashes'                                                                              -1.04 %       ±2.64%  ±3.54%  ±4.65%
02:15:01 url/url-parse.js n=10000000 type='escaped'                                                                       ***     -6.93 %       ±2.22%  ±2.95%  ±3.84%
02:15:01 url/url-parse.js n=10000000 type='normal'                                                                        ***     -6.07 %       ±2.37%  ±3.15%  ±4.10%
02:15:01 url/url-resolve.js n=100000 path='down' href='auth'                                                              ***     -5.93 %       ±2.62%  ±3.48%  ±4.54%
02:15:01 url/url-resolve.js n=100000 path='down' href='dot'                                                                       -2.05 %       ±4.19%  ±5.63%  ±7.43%
02:15:01 url/url-resolve.js n=100000 path='down' href='file'                                                                      -1.73 %       ±2.33%  ±3.10%  ±4.03%
02:15:01 url/url-resolve.js n=100000 path='down' href='idn'                                                                       -1.32 %       ±7.07%  ±9.40% ±12.24%
02:15:01 url/url-resolve.js n=100000 path='down' href='javascript'                                                         **     -6.52 %       ±4.12%  ±5.51%  ±7.24%
02:15:01 url/url-resolve.js n=100000 path='down' href='long'                                                                       1.07 %       ±3.25%  ±4.34%  ±5.68%
02:15:01 url/url-resolve.js n=100000 path='down' href='noscheme'                                                                  -2.54 %       ±4.31%  ±5.77%  ±7.60%
02:15:01 url/url-resolve.js n=100000 path='down' href='percent'                                                                   -3.29 %       ±3.54%  ±4.73%  ±6.19%
02:15:01 url/url-resolve.js n=100000 path='down' href='short'                                                                     -1.95 %       ±4.13%  ±5.50%  ±7.17%
02:15:01 url/url-resolve.js n=100000 path='down' href='ws'                                                                        -1.88 %       ±3.16%  ±4.22%  ±5.52%
02:15:01 url/url-resolve.js n=100000 path='foo/bar' href='auth'                                                                   -2.45 %       ±3.28%  ±4.38%  ±5.72%
02:15:01 url/url-resolve.js n=100000 path='foo/bar' href='dot'                                                                    -1.50 %       ±5.65%  ±7.52%  ±9.80%
02:15:01 url/url-resolve.js n=100000 path='foo/bar' href='file'                                                                   -4.01 %       ±7.97% ±10.62% ±13.85%
02:15:01 url/url-resolve.js n=100000 path='foo/bar' href='idn'                                                                    -3.76 %       ±3.80%  ±5.07%  ±6.65%
02:15:01 url/url-resolve.js n=100000 path='foo/bar' href='javascript'                                                     ***     -8.98 %       ±3.53%  ±4.71%  ±6.14%
02:15:01 url/url-resolve.js n=100000 path='foo/bar' href='long'                                                                   -0.94 %       ±2.37%  ±3.16%  ±4.12%
02:15:01 url/url-resolve.js n=100000 path='foo/bar' href='noscheme'                                                               -1.13 %       ±4.31%  ±5.76%  ±7.56%
02:15:01 url/url-resolve.js n=100000 path='foo/bar' href='percent'                                                                -3.14 %       ±3.92%  ±5.24%  ±6.85%
02:15:01 url/url-resolve.js n=100000 path='foo/bar' href='short'                                                                  -4.87 %       ±6.01%  ±7.99% ±10.41%
02:15:01 url/url-resolve.js n=100000 path='foo/bar' href='ws'                                                                     -2.40 %       ±4.71%  ±6.27%  ±8.16%
02:15:01 url/url-resolve.js n=100000 path='sibling' href='auth'                                                                   -2.66 %       ±4.44%  ±5.95%  ±7.81%
02:15:01 url/url-resolve.js n=100000 path='sibling' href='dot'                                                                    -1.84 %       ±4.47%  ±5.95%  ±7.74%
02:15:01 url/url-resolve.js n=100000 path='sibling' href='file'                                                                   -2.13 %       ±6.72%  ±8.94% ±11.64%
02:15:01 url/url-resolve.js n=100000 path='sibling' href='idn'                                                              *     -7.40 %       ±6.27%  ±8.35% ±10.88%
02:15:01 url/url-resolve.js n=100000 path='sibling' href='javascript'                                                             -2.42 %       ±5.75%  ±7.65%  ±9.97%
02:15:01 url/url-resolve.js n=100000 path='sibling' href='long'                                                           ***     -4.34 %       ±2.07%  ±2.76%  ±3.61%
02:15:01 url/url-resolve.js n=100000 path='sibling' href='noscheme'                                                               -4.32 %       ±4.67%  ±6.23%  ±8.13%
02:15:01 url/url-resolve.js n=100000 path='sibling' href='percent'                                                         **     -8.02 %       ±5.27%  ±7.02%  ±9.14%
02:15:01 url/url-resolve.js n=100000 path='sibling' href='short'                                                                  -0.44 %       ±2.24%  ±2.98%  ±3.88%
02:15:01 url/url-resolve.js n=100000 path='sibling' href='ws'                                                                     -2.97 %       ±5.88%  ±7.83% ±10.19%
02:15:01 url/url-resolve.js n=100000 path='up' href='auth'                                                                        -1.97 %       ±5.29%  ±7.03%  ±9.15%
02:15:01 url/url-resolve.js n=100000 path='up' href='dot'                                                                         -2.50 %       ±5.75%  ±7.65%  ±9.95%
02:15:01 url/url-resolve.js n=100000 path='up' href='file'                                                                        -6.97 %       ±8.17% ±10.88% ±14.17%
02:15:01 url/url-resolve.js n=100000 path='up' href='idn'                                                                          2.78 %       ±5.39%  ±7.23%  ±9.52%
02:15:01 url/url-resolve.js n=100000 path='up' href='javascript'                                                                  -2.93 %       ±6.39%  ±8.51% ±11.08%
02:15:01 url/url-resolve.js n=100000 path='up' href='long'                                                                        -1.89 %       ±2.06%  ±2.75%  ±3.58%
02:15:01 url/url-resolve.js n=100000 path='up' href='noscheme'                                                             **     -7.24 %       ±4.81%  ±6.46%  ±8.53%
02:15:01 url/url-resolve.js n=100000 path='up' href='percent'                                                                      0.39 %       ±3.78%  ±5.04%  ±6.60%
02:15:01 url/url-resolve.js n=100000 path='up' href='short'                                                                       -1.32 %       ±3.46%  ±4.64%  ±6.09%
02:15:01 url/url-resolve.js n=100000 path='up' href='ws'                                                                    *     -3.76 %       ±3.50%  ±4.67%  ±6.13%
02:15:01 url/url-resolve.js n=100000 path='withscheme' href='auth'                                                                -3.65 %       ±6.16%  ±8.20% ±10.67%
02:15:01 url/url-resolve.js n=100000 path='withscheme' href='dot'                                                           *     -2.18 %       ±1.94%  ±2.58%  ±3.36%
02:15:01 url/url-resolve.js n=100000 path='withscheme' href='file'                                                         **     -6.44 %       ±4.19%  ±5.61%  ±7.38%
02:15:01 url/url-resolve.js n=100000 path='withscheme' href='idn'                                                                  0.22 %       ±5.63%  ±7.51%  ±9.79%
02:15:01 url/url-resolve.js n=100000 path='withscheme' href='javascript'                                                  ***     -4.83 %       ±2.00%  ±2.66%  ±3.47%
02:15:01 url/url-resolve.js n=100000 path='withscheme' href='long'                                                                -2.26 %       ±4.35%  ±5.79%  ±7.54%
02:15:01 url/url-resolve.js n=100000 path='withscheme' href='noscheme'                                                    ***     -4.70 %       ±1.15%  ±1.54%  ±2.00%
02:15:01 url/url-resolve.js n=100000 path='withscheme' href='percent'                                                     ***     -4.57 %       ±1.46%  ±1.95%  ±2.53%
02:15:01 url/url-resolve.js n=100000 path='withscheme' href='short'                                                         *     -4.06 %       ±3.78%  ±5.03%  ±6.55%
02:15:01 url/url-resolve.js n=100000 path='withscheme' href='ws'                                                                  -4.38 %       ±4.92%  ±6.54%  ±8.52%
02:15:01 url/url-searchparams-iteration.js n=1000000 loopMethod='forEach'                                                         -0.47 %       ±3.77%  ±5.02%  ±6.53%
02:15:01 url/url-searchparams-iteration.js n=1000000 loopMethod='iterator'                                                         0.18 %       ±2.24%  ±2.98%  ±3.88%
02:15:01 url/url-searchparams-read.js n=20000000 param='nonexistent' accessMethod='get'                                           -2.74 %       ±3.32%  ±4.46%  ±5.89%
02:15:01 url/url-searchparams-read.js n=20000000 param='nonexistent' accessMethod='getAll'                                         1.15 %       ±1.32%  ±1.76%  ±2.29%
02:15:01 url/url-searchparams-read.js n=20000000 param='nonexistent' accessMethod='has'                                            0.64 %       ±3.25%  ±4.34%  ±5.67%
02:15:01 url/url-searchparams-read.js n=20000000 param='one' accessMethod='get'                                                   -1.04 %       ±3.33%  ±4.46%  ±5.88%
02:15:01 url/url-searchparams-read.js n=20000000 param='one' accessMethod='getAll'                                                -0.05 %       ±1.86%  ±2.48%  ±3.24%
02:15:01 url/url-searchparams-read.js n=20000000 param='one' accessMethod='has'                                                    2.37 %       ±4.80%  ±6.42%  ±8.40%
02:15:01 url/url-searchparams-read.js n=20000000 param='three' accessMethod='get'                                                 -2.87 %       ±4.34%  ±5.80%  ±7.60%
02:15:01 url/url-searchparams-read.js n=20000000 param='three' accessMethod='getAll'                                              -0.24 %       ±1.66%  ±2.22%  ±2.93%
02:15:01 url/url-searchparams-read.js n=20000000 param='three' accessMethod='has'                                                  0.57 %       ±3.12%  ±4.17%  ±5.47%
02:15:01 url/url-searchparams-read.js n=20000000 param='two' accessMethod='get'                                                   -1.00 %       ±4.38%  ±5.82%  ±7.58%
02:15:01 url/url-searchparams-read.js n=20000000 param='two' accessMethod='getAll'                                                -1.27 %       ±2.74%  ±3.65%  ±4.77%
02:15:01 url/url-searchparams-read.js n=20000000 param='two' accessMethod='has'                                                    2.44 %       ±4.69%  ±6.25%  ±8.16%
02:15:01 url/url-searchparams-sort.js n=1000000 type='almostsorted'                                                               -0.06 %       ±1.31%  ±1.74%  ±2.27%
02:15:01 url/url-searchparams-sort.js n=1000000 type='empty'                                                                       2.53 %       ±5.76%  ±7.66%  ±9.98%
02:15:01 url/url-searchparams-sort.js n=1000000 type='long'                                                                        2.32 %       ±5.45%  ±7.26%  ±9.46%
02:15:01 url/url-searchparams-sort.js n=1000000 type='random'                                                                     -0.94 %       ±2.12%  ±2.84%  ±3.74%
02:15:01 url/url-searchparams-sort.js n=1000000 type='reversed'                                                                   -0.29 %       ±0.58%  ±0.77%  ±1.00%
02:15:01 url/url-searchparams-sort.js n=1000000 type='short'                                                                       1.92 %       ±2.48%  ±3.33%  ±4.38%
02:15:01 url/url-searchparams-sort.js n=1000000 type='sorted'                                                                      1.35 %       ±3.62%  ±4.87%  ±6.45%
02:15:01 url/url-searchparams-sort.js n=1000000 type='wpt'                                                                         1.95 %       ±6.73%  ±8.98% ±11.73%
02:15:01 url/usvstring.js n=50000000 input='allinvalid'                                                                            0.47 %       ±1.08%  ±1.44%  ±1.87%
02:15:01 url/usvstring.js n=50000000 input='nonstring'                                                                             0.71 %       ±2.03%  ±2.73%  ±3.61%
02:15:01 url/usvstring.js n=50000000 input='someinvalid'                                                                           0.37 %       ±0.86%  ±1.15%  ±1.50%
02:15:01 url/usvstring.js n=50000000 input='valid'                                                                                -1.65 %       ±2.56%  ±3.42%  ±4.45%
02:15:01 url/usvstring.js n=50000000 input='validsurr'                                                                             0.52 %       ±2.03%  ±2.71%  ±3.52%
02:15:01 url/whatwg-url-idna.js n=5000000 to='ascii' domain='all'                                                                 -1.06 %       ±1.27%  ±1.70%  ±2.21%
02:15:01 url/whatwg-url-idna.js n=5000000 to='ascii' domain='empty'                                                               -0.55 %       ±2.19%  ±2.93%  ±3.82%
02:15:01 url/whatwg-url-idna.js n=5000000 to='ascii' domain='none'                                                                -1.02 %       ±1.65%  ±2.20%  ±2.87%
02:15:01 url/whatwg-url-idna.js n=5000000 to='ascii' domain='nonstring'                                                           -2.59 %       ±7.88% ±10.49% ±13.69%
02:15:01 url/whatwg-url-idna.js n=5000000 to='ascii' domain='some'                                                                 0.19 %       ±0.92%  ±1.23%  ±1.59%
02:15:01 url/whatwg-url-idna.js n=5000000 to='unicode' domain='all'                                                               -0.81 %       ±1.26%  ±1.69%  ±2.21%
02:15:01 url/whatwg-url-idna.js n=5000000 to='unicode' domain='empty'                                                             -3.08 %       ±5.09%  ±6.82%  ±8.96%
02:15:01 url/whatwg-url-idna.js n=5000000 to='unicode' domain='none'                                                              -1.31 %       ±1.78%  ±2.37%  ±3.08%
02:15:01 url/whatwg-url-idna.js n=5000000 to='unicode' domain='nonstring'                                                          1.63 %       ±6.68%  ±8.89% ±11.57%
02:15:01 url/whatwg-url-idna.js n=5000000 to='unicode' domain='some'                                                               0.78 %       ±1.33%  ±1.77%  ±2.31%
02:15:01 url/whatwg-url-properties.js prop='hash' e=1 type='wpt' withBase='false'                                                 -2.97 %      ±11.39% ±15.21% ±19.91%
02:15:01 url/whatwg-url-properties.js prop='hash' e=1 type='wpt' withBase='true'                                                   2.76 %       ±5.52%  ±7.34%  ±9.56%
02:15:01 url/whatwg-url-properties.js prop='host' e=1 type='wpt' withBase='false'                                                  0.19 %       ±8.73% ±11.61% ±15.12%
02:15:01 url/whatwg-url-properties.js prop='host' e=1 type='wpt' withBase='true'                                                   3.60 %       ±6.68%  ±8.91% ±11.64%
02:15:01 url/whatwg-url-properties.js prop='hostname' e=1 type='wpt' withBase='false'                                             -0.33 %       ±7.89% ±10.50% ±13.66%
02:15:01 url/whatwg-url-properties.js prop='hostname' e=1 type='wpt' withBase='true'                                               2.36 %       ±7.26%  ±9.66% ±12.57%
02:15:01 url/whatwg-url-properties.js prop='href' e=1 type='wpt' withBase='false'                                                  2.48 %       ±7.63% ±10.15% ±13.21%
02:15:01 url/whatwg-url-properties.js prop='href' e=1 type='wpt' withBase='true'                                                   5.95 %       ±7.35%  ±9.79% ±12.75%
02:15:01 url/whatwg-url-properties.js prop='origin' e=1 type='wpt' withBase='false'                                               -3.46 %       ±8.67% ±11.54% ±15.04%
02:15:01 url/whatwg-url-properties.js prop='origin' e=1 type='wpt' withBase='true'                                                 3.30 %       ±6.96%  ±9.27% ±12.08%
02:15:01 url/whatwg-url-properties.js prop='password' e=1 type='wpt' withBase='false'                                             -3.58 %       ±8.34% ±11.10% ±14.45%
02:15:01 url/whatwg-url-properties.js prop='password' e=1 type='wpt' withBase='true'                                               3.86 %       ±6.77%  ±9.03% ±11.81%
02:15:01 url/whatwg-url-properties.js prop='pathname' e=1 type='wpt' withBase='false'                                             -4.19 %       ±7.82% ±10.41% ±13.55%
02:15:01 url/whatwg-url-properties.js prop='pathname' e=1 type='wpt' withBase='true'                                              -1.04 %       ±8.50% ±11.31% ±14.72%
02:15:01 url/whatwg-url-properties.js prop='port' e=1 type='wpt' withBase='false'                                                 -4.25 %       ±6.60%  ±8.79% ±11.44%
02:15:01 url/whatwg-url-properties.js prop='port' e=1 type='wpt' withBase='true'                                                   5.69 %       ±7.41%  ±9.87% ±12.87%
02:15:01 url/whatwg-url-properties.js prop='protocol' e=1 type='wpt' withBase='false'                                             -1.85 %       ±6.93%  ±9.22% ±12.01%
02:15:01 url/whatwg-url-properties.js prop='protocol' e=1 type='wpt' withBase='true'                                               1.61 %       ±5.96%  ±7.94% ±10.36%
02:15:01 url/whatwg-url-properties.js prop='search' e=1 type='wpt' withBase='false'                                               -0.76 %       ±8.13% ±10.82% ±14.09%
02:15:01 url/whatwg-url-properties.js prop='search' e=1 type='wpt' withBase='true'                                                -0.87 %       ±7.81% ±10.42% ±13.61%
02:15:01 url/whatwg-url-properties.js prop='searchParams' e=1 type='wpt' withBase='false'                                          3.40 %       ±7.55% ±10.05% ±13.11%
02:15:01 url/whatwg-url-properties.js prop='searchParams' e=1 type='wpt' withBase='true'                                          -2.51 %      ±10.36% ±13.78% ±17.94%
02:15:01 url/whatwg-url-properties.js prop='username' e=1 type='wpt' withBase='false'                                             -1.31 %       ±8.22% ±10.94% ±14.25%
02:15:01 url/whatwg-url-properties.js prop='username' e=1 type='wpt' withBase='true'                                       **      9.86 %       ±7.09%  ±9.46% ±12.36%
02:15:01 
02:15:01 Be aware that when doing many comparisons the risk of a false-positive
02:15:01 result increases. In this case, there are 235 comparisons, you can thus
02:15:01 expect the following amount of false-positive results:
02:15:01   11.75 false positives, when considering a   5% risk acceptance (*, **, ***),
02:15:01   2.35 false positives, when considering a   1% risk acceptance (**, ***),
02:15:01   0.24 false positives, when considering a 0.1% risk acceptance (***)

@Trott
Copy link
Member Author

Trott commented Oct 22, 2022

New version doesn't replace all tabs, but does in the hostname looping stuff only.

Running another benchmark: https://ci.nodejs.org/view/Node.js%20benchmark/job/benchmark-node-micro-benchmarks/1205/

Copy link
Member

@anonrig anonrig left a comment

Choose a reason for hiding this comment

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

LGTM 🚀

@Trott
Copy link
Member Author

Trott commented Oct 22, 2022

Current benchmark looks a lot better.

confidence improvement accuracy (*)    (**)   (***)
13:05:25 url/legacy-vs-whatwg-url-get-prop.js e=1 method='legacy' type='auth'                                                      2.67 %       ±9.77% ±13.00% ±16.93%
13:05:25 url/legacy-vs-whatwg-url-get-prop.js e=1 method='legacy' type='dot'                                                      -2.44 %      ±11.40% ±15.17% ±19.74%
13:05:25 url/legacy-vs-whatwg-url-get-prop.js e=1 method='legacy' type='file'                                                     -0.78 %      ±10.26% ±13.65% ±17.77%
13:05:25 url/legacy-vs-whatwg-url-get-prop.js e=1 method='legacy' type='idn'                                                       1.24 %       ±8.46% ±11.26% ±14.66%
13:05:25 url/legacy-vs-whatwg-url-get-prop.js e=1 method='legacy' type='javascript'                                               -2.74 %      ±12.35% ±16.44% ±21.39%
13:05:25 url/legacy-vs-whatwg-url-get-prop.js e=1 method='legacy' type='long'                                                     -7.32 %       ±8.84% ±11.77% ±15.34%
13:05:25 url/legacy-vs-whatwg-url-get-prop.js e=1 method='legacy' type='percent'                                                  -1.56 %       ±9.70% ±12.90% ±16.80%
13:05:25 url/legacy-vs-whatwg-url-get-prop.js e=1 method='legacy' type='short'                                                     0.43 %       ±9.95% ±13.24% ±17.24%
13:05:25 url/legacy-vs-whatwg-url-get-prop.js e=1 method='legacy' type='wpt'                                                       0.11 %       ±9.71% ±12.93% ±16.86%
13:05:25 url/legacy-vs-whatwg-url-get-prop.js e=1 method='legacy' type='ws'                                                        3.50 %       ±8.82% ±11.74% ±15.29%
13:05:25 url/legacy-vs-whatwg-url-get-prop.js e=1 method='whatwg' type='auth'                                                     -4.15 %       ±9.30% ±12.38% ±16.12%
13:05:25 url/legacy-vs-whatwg-url-get-prop.js e=1 method='whatwg' type='dot'                                                      -1.90 %       ±5.65%  ±7.53%  ±9.80%
13:05:25 url/legacy-vs-whatwg-url-get-prop.js e=1 method='whatwg' type='file'                                                      1.27 %       ±5.57%  ±7.42%  ±9.65%
13:05:25 url/legacy-vs-whatwg-url-get-prop.js e=1 method='whatwg' type='idn'                                                      -2.28 %       ±7.35%  ±9.78% ±12.73%
13:05:25 url/legacy-vs-whatwg-url-get-prop.js e=1 method='whatwg' type='javascript'                                                0.45 %       ±8.01% ±10.65% ±13.87%
13:05:25 url/legacy-vs-whatwg-url-get-prop.js e=1 method='whatwg' type='long'                                                     -1.66 %       ±6.92%  ±9.21% ±11.99%
13:05:25 url/legacy-vs-whatwg-url-get-prop.js e=1 method='whatwg' type='percent'                                                   5.05 %       ±6.73%  ±8.97% ±11.69%
13:05:25 url/legacy-vs-whatwg-url-get-prop.js e=1 method='whatwg' type='short'                                                     4.52 %       ±6.62%  ±8.83% ±11.54%
13:05:25 url/legacy-vs-whatwg-url-get-prop.js e=1 method='whatwg' type='wpt'                                                       1.20 %       ±8.11% ±10.79% ±14.04%
13:05:25 url/legacy-vs-whatwg-url-get-prop.js e=1 method='whatwg' type='ws'                                                        2.09 %       ±8.30% ±11.05% ±14.38%
13:05:25 url/legacy-vs-whatwg-url-parse.js method='legacy' e=1 type='auth' withBase='false'                                       -0.55 %       ±7.89% ±10.49% ±13.66%
13:05:25 url/legacy-vs-whatwg-url-parse.js method='legacy' e=1 type='auth' withBase='true'                                        -3.66 %       ±8.23% ±10.96% ±14.28%
13:05:25 url/legacy-vs-whatwg-url-parse.js method='legacy' e=1 type='dot' withBase='false'                                        -4.30 %       ±7.00%  ±9.32% ±12.13%
13:05:25 url/legacy-vs-whatwg-url-parse.js method='legacy' e=1 type='dot' withBase='true'                                         -4.75 %       ±8.84% ±11.76% ±15.30%
13:05:25 url/legacy-vs-whatwg-url-parse.js method='legacy' e=1 type='file' withBase='false'                                        1.67 %       ±7.25%  ±9.66% ±12.58%
13:05:25 url/legacy-vs-whatwg-url-parse.js method='legacy' e=1 type='file' withBase='true'                                        -1.52 %       ±7.58% ±10.09% ±13.13%
13:05:25 url/legacy-vs-whatwg-url-parse.js method='legacy' e=1 type='idn' withBase='false'                                        -1.45 %       ±7.48%  ±9.96% ±12.97%
13:05:25 url/legacy-vs-whatwg-url-parse.js method='legacy' e=1 type='idn' withBase='true'                                         -4.98 %       ±8.20% ±10.92% ±14.21%
13:05:25 url/legacy-vs-whatwg-url-parse.js method='legacy' e=1 type='javascript' withBase='false'                                 -0.86 %       ±5.61%  ±7.47%  ±9.75%
13:05:25 url/legacy-vs-whatwg-url-parse.js method='legacy' e=1 type='javascript' withBase='true'                                   2.23 %       ±7.63% ±10.15% ±13.21%
13:05:25 url/legacy-vs-whatwg-url-parse.js method='legacy' e=1 type='long' withBase='false'                                        3.84 %       ±4.57%  ±6.10%  ±7.98%
13:05:25 url/legacy-vs-whatwg-url-parse.js method='legacy' e=1 type='long' withBase='true'                                         0.58 %       ±5.10%  ±6.78%  ±8.83%
13:05:25 url/legacy-vs-whatwg-url-parse.js method='legacy' e=1 type='percent' withBase='false'                                     6.64 %       ±7.09%  ±9.44% ±12.32%
13:05:25 url/legacy-vs-whatwg-url-parse.js method='legacy' e=1 type='percent' withBase='true'                                      1.37 %       ±8.01% ±10.67% ±13.89%
13:05:25 url/legacy-vs-whatwg-url-parse.js method='legacy' e=1 type='short' withBase='false'                                       1.67 %       ±8.37% ±11.14% ±14.51%
13:05:25 url/legacy-vs-whatwg-url-parse.js method='legacy' e=1 type='short' withBase='true'                                       -0.70 %       ±5.36%  ±7.14%  ±9.30%
13:05:25 url/legacy-vs-whatwg-url-parse.js method='legacy' e=1 type='wpt' withBase='false'                                         0.86 %       ±7.32%  ±9.74% ±12.68%
13:05:25 url/legacy-vs-whatwg-url-parse.js method='legacy' e=1 type='wpt' withBase='true'                                         -2.59 %       ±6.21%  ±8.27% ±10.78%
13:05:25 url/legacy-vs-whatwg-url-parse.js method='legacy' e=1 type='ws' withBase='false'                                          1.17 %       ±5.87%  ±7.81% ±10.17%
13:05:25 url/legacy-vs-whatwg-url-parse.js method='legacy' e=1 type='ws' withBase='true'                                          -1.00 %       ±4.48%  ±5.96%  ±7.78%
13:05:25 url/legacy-vs-whatwg-url-parse.js method='whatwg' e=1 type='auth' withBase='false'                                        4.14 %       ±7.21%  ±9.61% ±12.55%
13:05:25 url/legacy-vs-whatwg-url-parse.js method='whatwg' e=1 type='auth' withBase='true'                                         2.76 %       ±6.46%  ±8.60% ±11.20%
13:05:25 url/legacy-vs-whatwg-url-parse.js method='whatwg' e=1 type='dot' withBase='false'                                         0.59 %       ±8.38% ±11.14% ±14.50%
13:05:25 url/legacy-vs-whatwg-url-parse.js method='whatwg' e=1 type='dot' withBase='true'                                         -0.67 %       ±7.73% ±10.29% ±13.40%
13:05:25 url/legacy-vs-whatwg-url-parse.js method='whatwg' e=1 type='file' withBase='false'                                        1.35 %       ±7.76% ±10.32% ±13.44%
13:05:25 url/legacy-vs-whatwg-url-parse.js method='whatwg' e=1 type='file' withBase='true'                                         4.41 %       ±4.59%  ±6.12%  ±7.99%
13:05:25 url/legacy-vs-whatwg-url-parse.js method='whatwg' e=1 type='idn' withBase='false'                                        -2.77 %       ±6.03%  ±8.03% ±10.46%
13:05:25 url/legacy-vs-whatwg-url-parse.js method='whatwg' e=1 type='idn' withBase='true'                                         -2.71 %       ±6.30%  ±8.39% ±10.94%
13:05:25 url/legacy-vs-whatwg-url-parse.js method='whatwg' e=1 type='javascript' withBase='false'                                  3.58 %       ±7.23%  ±9.62% ±12.53%
13:05:25 url/legacy-vs-whatwg-url-parse.js method='whatwg' e=1 type='javascript' withBase='true'                                   3.10 %       ±7.14%  ±9.51% ±12.37%
13:05:25 url/legacy-vs-whatwg-url-parse.js method='whatwg' e=1 type='long' withBase='false'                                        1.48 %       ±5.97%  ±7.98% ±10.43%
13:05:25 url/legacy-vs-whatwg-url-parse.js method='whatwg' e=1 type='long' withBase='true'                                         1.45 %       ±4.84%  ±6.44%  ±8.39%
13:05:25 url/legacy-vs-whatwg-url-parse.js method='whatwg' e=1 type='percent' withBase='false'                                     2.46 %       ±7.30%  ±9.72% ±12.65%
13:05:25 url/legacy-vs-whatwg-url-parse.js method='whatwg' e=1 type='percent' withBase='true'                                      1.15 %       ±7.69% ±10.23% ±13.32%
13:05:25 url/legacy-vs-whatwg-url-parse.js method='whatwg' e=1 type='short' withBase='false'                                       1.95 %       ±7.97% ±10.61% ±13.82%
13:05:25 url/legacy-vs-whatwg-url-parse.js method='whatwg' e=1 type='short' withBase='true'                                        2.23 %       ±6.47%  ±8.61% ±11.22%
13:05:25 url/legacy-vs-whatwg-url-parse.js method='whatwg' e=1 type='wpt' withBase='false'                                        -1.15 %       ±5.11%  ±6.81%  ±8.88%
13:05:25 url/legacy-vs-whatwg-url-parse.js method='whatwg' e=1 type='wpt' withBase='true'                                         -0.51 %       ±6.18%  ±8.22% ±10.70%
13:05:25 url/legacy-vs-whatwg-url-parse.js method='whatwg' e=1 type='ws' withBase='false'                                          2.90 %       ±7.57% ±10.08% ±13.12%
13:05:25 url/legacy-vs-whatwg-url-parse.js method='whatwg' e=1 type='ws' withBase='true'                                          -0.49 %       ±4.90%  ±6.52%  ±8.49%
13:05:25 url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='legacy' searchParam='altspaces'                         -0.37 %       ±2.14%  ±2.86%  ±3.72%
13:05:25 url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='legacy' searchParam='encodefake'                         0.71 %       ±2.51%  ±3.34%  ±4.35%
13:05:25 url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='legacy' searchParam='encodelast'                        -2.20 %       ±2.81%  ±3.75%  ±4.91%
13:05:25 url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='legacy' searchParam='encodemany'                        -0.14 %       ±1.81%  ±2.41%  ±3.14%
13:05:25 url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='legacy' searchParam='manyblankpairs'                    -4.00 %       ±9.19% ±12.25% ±15.99%
13:05:25 url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='legacy' searchParam='manypairs'                         -0.66 %       ±2.56%  ±3.41%  ±4.44%
13:05:25 url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='legacy' searchParam='multicharsep'                      -1.46 %       ±4.31%  ±5.77%  ±7.56%
13:05:25 url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='legacy' searchParam='multivalue'                        -1.12 %       ±3.34%  ±4.45%  ±5.81%
13:05:25 url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='legacy' searchParam='multivaluemany'                    -0.04 %       ±1.74%  ±2.32%  ±3.03%
13:05:25 url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='legacy' searchParam='noencode'                          -1.63 %       ±3.75%  ±5.02%  ±6.60%
13:05:25 url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='whatwg' searchParam='altspaces'                          6.47 %       ±7.08%  ±9.42% ±12.26%
13:05:25 url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='whatwg' searchParam='encodefake'                         1.56 %       ±4.42%  ±5.92%  ±7.79%
13:05:25 url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='whatwg' searchParam='encodelast'                        -3.52 %       ±5.68%  ±7.57%  ±9.88%
13:05:25 url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='whatwg' searchParam='encodemany'                         0.26 %       ±3.08%  ±4.11%  ±5.35%
13:05:25 url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='whatwg' searchParam='manyblankpairs'                     1.90 %       ±2.35%  ±3.13%  ±4.09%
13:05:25 url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='whatwg' searchParam='manypairs'                          0.21 %       ±1.95%  ±2.61%  ±3.41%
13:05:25 url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='whatwg' searchParam='multicharsep'                      -1.14 %       ±6.16%  ±8.20% ±10.68%
13:05:25 url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='whatwg' searchParam='multivalue'                         7.70 %       ±8.81% ±11.80% ±15.53%
13:05:25 url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='whatwg' searchParam='multivaluemany'                     1.58 %       ±4.20%  ±5.62%  ±7.37%
13:05:25 url/legacy-vs-whatwg-url-searchparams-parse.js n=1000000 method='whatwg' searchParam='noencode'                           2.15 %      ±10.63% ±14.14% ±18.41%
13:05:25 url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='legacy' searchParam='altspaces'                     -0.22 %       ±4.08%  ±5.43%  ±7.07%
13:05:25 url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='legacy' searchParam='encodefake'                    -0.79 %       ±2.28%  ±3.04%  ±3.96%
13:05:25 url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='legacy' searchParam='encodelast'                     0.18 %       ±1.53%  ±2.03%  ±2.66%
13:05:25 url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='legacy' searchParam='encodemany'                    -1.80 %       ±6.13%  ±8.18% ±10.69%
13:05:25 url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='legacy' searchParam='manyblankpairs'                 3.62 %       ±6.83%  ±9.12% ±11.93%
13:05:25 url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='legacy' searchParam='manypairs'              **     -2.83 %       ±1.77%  ±2.35%  ±3.07%
13:05:25 url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='legacy' searchParam='multicharsep'                   2.24 %       ±4.83%  ±6.50%  ±8.61%
13:05:25 url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='legacy' searchParam='multivalue'                    -0.65 %       ±1.85%  ±2.46%  ±3.20%
13:05:25 url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='legacy' searchParam='multivaluemany'                 1.74 %       ±4.10%  ±5.48%  ±7.16%
13:05:25 url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='legacy' searchParam='noencode'                       0.48 %       ±3.30%  ±4.41%  ±5.80%
13:05:25 url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='whatwg' searchParam='altspaces'                     -1.67 %       ±5.45%  ±7.26%  ±9.45%
13:05:25 url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='whatwg' searchParam='encodefake'                    -3.14 %       ±6.76%  ±9.00% ±11.75%
13:05:25 url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='whatwg' searchParam='encodelast'                     5.88 %       ±7.65% ±10.31% ±13.67%
13:05:25 url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='whatwg' searchParam='encodemany'                     0.09 %       ±9.70% ±12.91% ±16.80%
13:05:25 url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='whatwg' searchParam='manyblankpairs'                 5.42 %       ±7.63% ±10.22% ±13.43%
13:05:25 url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='whatwg' searchParam='manypairs'                      0.08 %       ±3.77%  ±5.07%  ±6.70%
13:05:25 url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='whatwg' searchParam='multicharsep'                   2.16 %       ±3.18%  ±4.28%  ±5.66%
13:05:25 url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='whatwg' searchParam='multivalue'                    -0.49 %       ±6.20%  ±8.25% ±10.74%
13:05:25 url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='whatwg' searchParam='multivaluemany'                -0.06 %       ±4.33%  ±5.76%  ±7.51%
13:05:25 url/legacy-vs-whatwg-url-searchparams-serialize.js n=1000000 method='whatwg' searchParam='noencode'                       4.33 %       ±8.54% ±11.38% ±14.85%
13:05:25 url/legacy-vs-whatwg-url-serialize.js e=1 method='legacy' type='auth'                                                    -1.67 %       ±5.72%  ±7.61%  ±9.90%
13:05:25 url/legacy-vs-whatwg-url-serialize.js e=1 method='legacy' type='dot'                                                     -2.58 %       ±6.89%  ±9.17% ±11.94%
13:05:25 url/legacy-vs-whatwg-url-serialize.js e=1 method='legacy' type='file'                                                    -1.52 %       ±7.18%  ±9.55% ±12.43%
13:05:25 url/legacy-vs-whatwg-url-serialize.js e=1 method='legacy' type='idn'                                                     -5.57 %       ±7.22%  ±9.61% ±12.52%
13:05:25 url/legacy-vs-whatwg-url-serialize.js e=1 method='legacy' type='javascript'                                               2.14 %       ±5.39%  ±7.19%  ±9.40%
13:05:25 url/legacy-vs-whatwg-url-serialize.js e=1 method='legacy' type='long'                                                     5.25 %      ±11.36% ±15.20% ±19.96%
13:05:25 url/legacy-vs-whatwg-url-serialize.js e=1 method='legacy' type='percent'                                                  2.91 %       ±7.32%  ±9.74% ±12.69%
13:05:25 url/legacy-vs-whatwg-url-serialize.js e=1 method='legacy' type='short'                                                   -3.44 %       ±6.17%  ±8.22% ±10.69%
13:05:25 url/legacy-vs-whatwg-url-serialize.js e=1 method='legacy' type='wpt'                                                     -1.55 %       ±6.56%  ±8.73% ±11.38%
13:05:25 url/legacy-vs-whatwg-url-serialize.js e=1 method='legacy' type='ws'                                                      -1.77 %       ±6.95%  ±9.25% ±12.04%
13:05:25 url/legacy-vs-whatwg-url-serialize.js e=1 method='whatwg' type='auth'                                                    -4.05 %       ±7.31%  ±9.74% ±12.72%
13:05:25 url/legacy-vs-whatwg-url-serialize.js e=1 method='whatwg' type='dot'                                                     -2.44 %       ±6.50%  ±8.65% ±11.27%
13:05:25 url/legacy-vs-whatwg-url-serialize.js e=1 method='whatwg' type='file'                                                     0.13 %       ±7.46%  ±9.93% ±12.93%
13:05:25 url/legacy-vs-whatwg-url-serialize.js e=1 method='whatwg' type='idn'                                                     -3.94 %       ±7.71% ±10.26% ±13.39%
13:05:25 url/legacy-vs-whatwg-url-serialize.js e=1 method='whatwg' type='javascript'                                               0.69 %       ±7.45%  ±9.92% ±12.92%
13:05:25 url/legacy-vs-whatwg-url-serialize.js e=1 method='whatwg' type='long'                                                    -2.99 %       ±6.67%  ±8.88% ±11.56%
13:05:25 url/legacy-vs-whatwg-url-serialize.js e=1 method='whatwg' type='percent'                                                 -3.44 %       ±5.96%  ±7.93% ±10.32%
13:05:25 url/legacy-vs-whatwg-url-serialize.js e=1 method='whatwg' type='short'                                                    3.36 %       ±6.70%  ±8.92% ±11.61%
13:05:25 url/legacy-vs-whatwg-url-serialize.js e=1 method='whatwg' type='wpt'                                               *     -8.25 %       ±6.52%  ±8.72% ±11.44%
13:05:25 url/legacy-vs-whatwg-url-serialize.js e=1 method='whatwg' type='ws'                                                       0.51 %       ±6.87%  ±9.14% ±11.92%
13:05:25 url/url-format.js n=25000000 type='file'                                                                                  0.40 %       ±2.22%  ±2.97%  ±3.87%
13:05:25 url/url-format.js n=25000000 type='slashes'                                                                              -2.38 %       ±2.69%  ±3.58%  ±4.69%
13:05:25 url/url-parse.js n=10000000 type='escaped'                                                                         *      1.63 %       ±1.59%  ±2.12%  ±2.77%
13:05:25 url/url-parse.js n=10000000 type='normal'                                                                                -1.98 %       ±2.23%  ±2.97%  ±3.88%
13:05:25 url/url-resolve.js n=100000 path='down' href='auth'                                                                      -0.07 %       ±2.52%  ±3.35%  ±4.37%
13:05:25 url/url-resolve.js n=100000 path='down' href='dot'                                                                        1.87 %       ±5.82%  ±7.75% ±10.10%
13:05:25 url/url-resolve.js n=100000 path='down' href='file'                                                                       0.53 %       ±2.02%  ±2.68%  ±3.50%
13:05:25 url/url-resolve.js n=100000 path='down' href='idn'                                                                       -0.59 %       ±6.78%  ±9.03% ±11.78%
13:05:25 url/url-resolve.js n=100000 path='down' href='javascript'                                                                -0.26 %       ±2.33%  ±3.10%  ±4.04%
13:05:25 url/url-resolve.js n=100000 path='down' href='long'                                                                       0.33 %       ±3.57%  ±4.76%  ±6.20%
13:05:25 url/url-resolve.js n=100000 path='down' href='noscheme'                                                                  -0.99 %       ±2.33%  ±3.10%  ±4.04%
13:05:25 url/url-resolve.js n=100000 path='down' href='percent'                                                                   -1.33 %       ±3.34%  ±4.44%  ±5.78%
13:05:25 url/url-resolve.js n=100000 path='down' href='short'                                                                     -4.11 %       ±5.11%  ±6.87%  ±9.10%
13:05:25 url/url-resolve.js n=100000 path='down' href='ws'                                                                         1.06 %       ±5.56%  ±7.40%  ±9.64%
13:05:25 url/url-resolve.js n=100000 path='foo/bar' href='auth'                                                                   -1.94 %       ±4.76%  ±6.34%  ±8.25%
13:05:25 url/url-resolve.js n=100000 path='foo/bar' href='dot'                                                                    -1.59 %       ±4.36%  ±5.85%  ±7.70%
13:05:25 url/url-resolve.js n=100000 path='foo/bar' href='file'                                                                    3.00 %       ±5.24%  ±7.04%  ±9.30%
13:05:25 url/url-resolve.js n=100000 path='foo/bar' href='idn'                                                                     0.95 %       ±7.42%  ±9.92% ±13.01%
13:05:25 url/url-resolve.js n=100000 path='foo/bar' href='javascript'                                                             -0.02 %       ±4.14%  ±5.52%  ±7.20%
13:05:25 url/url-resolve.js n=100000 path='foo/bar' href='long'                                                                    2.77 %       ±2.94%  ±3.92%  ±5.13%
13:05:25 url/url-resolve.js n=100000 path='foo/bar' href='noscheme'                                                               -2.31 %       ±3.61%  ±4.81%  ±6.29%
13:05:25 url/url-resolve.js n=100000 path='foo/bar' href='percent'                                                                 1.28 %       ±4.40%  ±5.87%  ±7.68%
13:05:25 url/url-resolve.js n=100000 path='foo/bar' href='short'                                                                   0.44 %       ±7.24%  ±9.64% ±12.56%
13:05:25 url/url-resolve.js n=100000 path='foo/bar' href='ws'                                                                     -2.47 %       ±5.41%  ±7.20%  ±9.39%
13:05:25 url/url-resolve.js n=100000 path='sibling' href='auth'                                                                    1.54 %       ±3.76%  ±5.01%  ±6.54%
13:05:25 url/url-resolve.js n=100000 path='sibling' href='dot'                                                                    -1.03 %       ±3.61%  ±4.81%  ±6.29%
13:05:25 url/url-resolve.js n=100000 path='sibling' href='file'                                                             *     -5.20 %       ±5.16%  ±6.91%  ±9.08%
13:05:25 url/url-resolve.js n=100000 path='sibling' href='idn'                                                                     0.70 %       ±3.97%  ±5.30%  ±6.95%
13:05:25 url/url-resolve.js n=100000 path='sibling' href='javascript'                                                              1.83 %       ±3.95%  ±5.29%  ±6.95%
13:05:25 url/url-resolve.js n=100000 path='sibling' href='long'                                                             *      4.11 %       ±3.17%  ±4.23%  ±5.52%
13:05:25 url/url-resolve.js n=100000 path='sibling' href='noscheme'                                                               -2.49 %       ±4.17%  ±5.58%  ±7.31%
13:05:25 url/url-resolve.js n=100000 path='sibling' href='percent'                                                                -3.33 %       ±5.48%  ±7.31%  ±9.54%
13:05:25 url/url-resolve.js n=100000 path='sibling' href='short'                                                                   3.07 %       ±6.73%  ±8.98% ±11.72%
13:05:25 url/url-resolve.js n=100000 path='sibling' href='ws'                                                                      0.38 %       ±4.30%  ±5.72%  ±7.45%
13:05:25 url/url-resolve.js n=100000 path='up' href='auth'                                                                        -0.20 %       ±4.97%  ±6.62%  ±8.64%
13:05:25 url/url-resolve.js n=100000 path='up' href='dot'                                                                   *     -2.77 %       ±2.71%  ±3.60%  ±4.69%
13:05:25 url/url-resolve.js n=100000 path='up' href='file'                                                                        -2.55 %       ±5.74%  ±7.66% ±10.03%
13:05:25 url/url-resolve.js n=100000 path='up' href='idn'                                                                         -0.36 %       ±4.69%  ±6.27%  ±8.23%
13:05:25 url/url-resolve.js n=100000 path='up' href='javascript'                                                                  -0.09 %       ±6.16%  ±8.23% ±10.76%
13:05:25 url/url-resolve.js n=100000 path='up' href='long'                                                                         0.85 %       ±2.17%  ±2.89%  ±3.77%
13:05:25 url/url-resolve.js n=100000 path='up' href='noscheme'                                                                    -0.62 %       ±6.43%  ±8.59% ±11.26%
13:05:25 url/url-resolve.js n=100000 path='up' href='percent'                                                                      0.40 %       ±3.14%  ±4.19%  ±5.47%
13:05:25 url/url-resolve.js n=100000 path='up' href='short'                                                                       -0.67 %       ±6.00%  ±7.99% ±10.41%
13:05:25 url/url-resolve.js n=100000 path='up' href='ws'                                                                           0.38 %       ±5.05%  ±6.72%  ±8.74%
13:05:25 url/url-resolve.js n=100000 path='withscheme' href='auth'                                                                 0.51 %       ±6.36%  ±8.46% ±11.02%
13:05:25 url/url-resolve.js n=100000 path='withscheme' href='dot'                                                                 -0.00 %       ±5.85%  ±7.78% ±10.13%
13:05:25 url/url-resolve.js n=100000 path='withscheme' href='file'                                                                -0.44 %       ±5.50%  ±7.32%  ±9.54%
13:05:25 url/url-resolve.js n=100000 path='withscheme' href='idn'                                                                  0.63 %       ±7.19%  ±9.57% ±12.46%
13:05:25 url/url-resolve.js n=100000 path='withscheme' href='javascript'                                                          -0.55 %       ±2.16%  ±2.87%  ±3.74%
13:05:25 url/url-resolve.js n=100000 path='withscheme' href='long'                                                                -0.87 %       ±2.21%  ±2.95%  ±3.84%
13:05:25 url/url-resolve.js n=100000 path='withscheme' href='noscheme'                                                            -1.34 %       ±2.74%  ±3.64%  ±4.74%
13:05:25 url/url-resolve.js n=100000 path='withscheme' href='percent'                                                              1.15 %       ±1.63%  ±2.17%  ±2.83%
13:05:25 url/url-resolve.js n=100000 path='withscheme' href='short'                                                                1.37 %       ±1.85%  ±2.46%  ±3.21%
13:05:25 url/url-resolve.js n=100000 path='withscheme' href='ws'                                                                  -1.01 %       ±2.62%  ±3.49%  ±4.55%
13:05:25 url/url-searchparams-iteration.js n=1000000 loopMethod='forEach'                                                          1.09 %       ±2.81%  ±3.74%  ±4.87%
13:05:25 url/url-searchparams-iteration.js n=1000000 loopMethod='iterator'                                                        -0.97 %       ±2.10%  ±2.79%  ±3.64%
13:05:25 url/url-searchparams-read.js n=20000000 param='nonexistent' accessMethod='get'                                            1.81 %       ±3.82%  ±5.11%  ±6.69%
13:05:25 url/url-searchparams-read.js n=20000000 param='nonexistent' accessMethod='getAll'                                         0.06 %       ±3.63%  ±4.88%  ±6.44%
13:05:25 url/url-searchparams-read.js n=20000000 param='nonexistent' accessMethod='has'                                            1.05 %       ±3.64%  ±4.85%  ±6.33%
13:05:25 url/url-searchparams-read.js n=20000000 param='one' accessMethod='get'                                                    1.55 %       ±3.55%  ±4.72%  ±6.14%
13:05:25 url/url-searchparams-read.js n=20000000 param='one' accessMethod='getAll'                                                 1.18 %       ±2.06%  ±2.74%  ±3.57%
13:05:25 url/url-searchparams-read.js n=20000000 param='one' accessMethod='has'                                                   -3.76 %       ±6.39%  ±8.51% ±11.09%
13:05:25 url/url-searchparams-read.js n=20000000 param='three' accessMethod='get'                                                  0.67 %       ±3.01%  ±4.01%  ±5.22%
13:05:25 url/url-searchparams-read.js n=20000000 param='three' accessMethod='getAll'                                               0.22 %       ±1.39%  ±1.85%  ±2.41%
13:05:25 url/url-searchparams-read.js n=20000000 param='three' accessMethod='has'                                                 -3.58 %       ±3.89%  ±5.22%  ±6.89%
13:05:25 url/url-searchparams-read.js n=20000000 param='two' accessMethod='get'                                                   -1.02 %       ±4.40%  ±5.86%  ±7.64%
13:05:25 url/url-searchparams-read.js n=20000000 param='two' accessMethod='getAll'                                                -0.00 %       ±2.23%  ±2.97%  ±3.89%
13:05:25 url/url-searchparams-read.js n=20000000 param='two' accessMethod='has'                                                   -0.02 %       ±1.62%  ±2.16%  ±2.82%
13:05:25 url/url-searchparams-sort.js n=1000000 type='almostsorted'                                                                0.17 %       ±1.34%  ±1.78%  ±2.33%
13:05:25 url/url-searchparams-sort.js n=1000000 type='empty'                                                                      -1.22 %       ±3.14%  ±4.17%  ±5.44%
13:05:25 url/url-searchparams-sort.js n=1000000 type='long'                                                                        2.53 %       ±4.51%  ±6.00%  ±7.82%
13:05:25 url/url-searchparams-sort.js n=1000000 type='random'                                                                      1.47 %       ±2.00%  ±2.68%  ±3.53%
13:05:25 url/url-searchparams-sort.js n=1000000 type='reversed'                                                                    0.12 %       ±0.59%  ±0.79%  ±1.03%
13:05:25 url/url-searchparams-sort.js n=1000000 type='short'                                                                      -4.48 %       ±5.13%  ±6.90%  ±9.13%
13:05:25 url/url-searchparams-sort.js n=1000000 type='sorted'                                                               *      1.10 %       ±1.06%  ±1.41%  ±1.84%
13:05:25 url/url-searchparams-sort.js n=1000000 type='wpt'                                                                         3.01 %       ±8.75% ±11.70% ±15.34%
13:05:25 url/usvstring.js n=50000000 input='allinvalid'                                                                           -1.36 %       ±1.42%  ±1.90%  ±2.48%
13:05:25 url/usvstring.js n=50000000 input='nonstring'                                                                            -0.40 %       ±1.33%  ±1.78%  ±2.32%
13:05:25 url/usvstring.js n=50000000 input='someinvalid'                                                                    *     -1.05 %       ±0.89%  ±1.19%  ±1.55%
13:05:25 url/usvstring.js n=50000000 input='valid'                                                                                 0.64 %       ±1.29%  ±1.73%  ±2.26%
13:05:25 url/usvstring.js n=50000000 input='validsurr'                                                                             1.20 %       ±2.00%  ±2.67%  ±3.47%
13:05:25 url/whatwg-url-idna.js n=5000000 to='ascii' domain='all'                                                                  0.36 %       ±1.29%  ±1.71%  ±2.24%
13:05:25 url/whatwg-url-idna.js n=5000000 to='ascii' domain='empty'                                                               -1.42 %       ±2.21%  ±2.94%  ±3.83%
13:05:25 url/whatwg-url-idna.js n=5000000 to='ascii' domain='none'                                                                 0.07 %       ±2.53%  ±3.37%  ±4.38%
13:05:25 url/whatwg-url-idna.js n=5000000 to='ascii' domain='nonstring'                                                            1.23 %       ±6.59%  ±8.78% ±11.44%
13:05:25 url/whatwg-url-idna.js n=5000000 to='ascii' domain='some'                                                                 0.03 %       ±1.16%  ±1.55%  ±2.02%
13:05:25 url/whatwg-url-idna.js n=5000000 to='unicode' domain='all'                                                                0.91 %       ±1.24%  ±1.65%  ±2.15%
13:05:25 url/whatwg-url-idna.js n=5000000 to='unicode' domain='empty'                                                             -2.86 %       ±5.29%  ±7.11%  ±9.38%
13:05:25 url/whatwg-url-idna.js n=5000000 to='unicode' domain='none'                                                              -0.66 %       ±1.50%  ±2.00%  ±2.60%
13:05:25 url/whatwg-url-idna.js n=5000000 to='unicode' domain='nonstring'                                                         -0.97 %       ±4.14%  ±5.53%  ±7.25%
13:05:25 url/whatwg-url-idna.js n=5000000 to='unicode' domain='some'                                                               0.97 %       ±1.42%  ±1.89%  ±2.46%
13:05:25 url/whatwg-url-properties.js prop='hash' e=1 type='wpt' withBase='false'                                                 -0.74 %       ±8.07% ±10.73% ±13.97%
13:05:25 url/whatwg-url-properties.js prop='hash' e=1 type='wpt' withBase='true'                                                   0.40 %       ±6.68%  ±8.89% ±11.59%
13:05:25 url/whatwg-url-properties.js prop='host' e=1 type='wpt' withBase='false'                                                  1.50 %       ±9.59% ±12.77% ±16.64%
13:05:25 url/whatwg-url-properties.js prop='host' e=1 type='wpt' withBase='true'                                                   1.21 %       ±8.11% ±10.79% ±14.05%
13:05:25 url/whatwg-url-properties.js prop='hostname' e=1 type='wpt' withBase='false'                                              8.28 %      ±10.08% ±13.41% ±17.46%
13:05:25 url/whatwg-url-properties.js prop='hostname' e=1 type='wpt' withBase='true'                                               4.73 %       ±7.95% ±10.57% ±13.76%
13:05:25 url/whatwg-url-properties.js prop='href' e=1 type='wpt' withBase='false'                                                  1.23 %       ±7.45%  ±9.91% ±12.90%
13:05:25 url/whatwg-url-properties.js prop='href' e=1 type='wpt' withBase='true'                                                  -3.69 %       ±7.85% ±10.44% ±13.59%
13:05:25 url/whatwg-url-properties.js prop='origin' e=1 type='wpt' withBase='false'                                               -4.12 %       ±7.76% ±10.34% ±13.47%
13:05:25 url/whatwg-url-properties.js prop='origin' e=1 type='wpt' withBase='true'                                                 2.09 %       ±6.27%  ±8.35% ±10.89%
13:05:25 url/whatwg-url-properties.js prop='password' e=1 type='wpt' withBase='false'                                             -2.45 %       ±9.13% ±12.19% ±15.95%
13:05:25 url/whatwg-url-properties.js prop='password' e=1 type='wpt' withBase='true'                                              -0.58 %       ±7.99% ±10.63% ±13.84%
13:05:25 url/whatwg-url-properties.js prop='pathname' e=1 type='wpt' withBase='false'                                              3.53 %       ±6.97%  ±9.28% ±12.08%
13:05:25 url/whatwg-url-properties.js prop='pathname' e=1 type='wpt' withBase='true'                                              -2.66 %       ±6.95%  ±9.25% ±12.04%
13:05:25 url/whatwg-url-properties.js prop='port' e=1 type='wpt' withBase='false'                                           *     -8.61 %       ±7.28%  ±9.71% ±12.68%
13:05:25 url/whatwg-url-properties.js prop='port' e=1 type='wpt' withBase='true'                                                   3.09 %       ±7.93% ±10.57% ±13.79%
13:05:25 url/whatwg-url-properties.js prop='protocol' e=1 type='wpt' withBase='false'                                              2.07 %       ±7.52% ±10.01% ±13.03%
13:05:25 url/whatwg-url-properties.js prop='protocol' e=1 type='wpt' withBase='true'                                              -2.22 %       ±7.99% ±10.63% ±13.84%
13:05:25 url/whatwg-url-properties.js prop='search' e=1 type='wpt' withBase='false'                                               -1.79 %       ±8.49% ±11.30% ±14.71%
13:05:25 url/whatwg-url-properties.js prop='search' e=1 type='wpt' withBase='true'                                                -2.65 %       ±8.53% ±11.35% ±14.79%
13:05:25 url/whatwg-url-properties.js prop='searchParams' e=1 type='wpt' withBase='false'                                          3.53 %       ±7.60% ±10.11% ±13.16%
13:05:25 url/whatwg-url-properties.js prop='searchParams' e=1 type='wpt' withBase='true'                                          -0.15 %      ±11.43% ±15.21% ±19.81%
13:05:25 url/whatwg-url-properties.js prop='username' e=1 type='wpt' withBase='false'                                             -1.32 %       ±7.65% ±10.18% ±13.27%
13:05:25 url/whatwg-url-properties.js prop='username' e=1 type='wpt' withBase='true'                                               2.40 %       ±7.12%  ±9.48% ±12.35%
13:05:25 
13:05:25 Be aware that when doing many comparisons the risk of a false-positive
13:05:25 result increases. In this case, there are 235 comparisons, you can thus
13:05:25 expect the following amount of false-positive results:
13:05:25   11.75 false positives, when considering a   5% risk acceptance (*, **, ***),
13:05:25   2.35 false positives, when considering a   1% risk acceptance (**, ***),
13:05:25   0.24 false positives, when considering a 0.1% risk acceptance (***)

@Trott Trott 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 22, 2022
@Trott
Copy link
Member Author

Trott commented Oct 22, 2022

Commit message will need adjustment when landing because we've narrowed the scope a bit.

@Trott
Copy link
Member Author

Trott commented Oct 22, 2022

@github-actions github-actions bot removed the request-ci Add this label to start a Jenkins CI on a PR. label Oct 22, 2022
@nodejs-github-bot
Copy link
Collaborator

Copy link
Member

@tniessen tniessen left a comment

Choose a reason for hiding this comment

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

Unexpected, admittedly, but okay.

@nodejs-github-bot
Copy link
Collaborator

@Trott
Copy link
Member Author

Trott commented Oct 23, 2022

CITGM: https://ci.nodejs.org/view/Node.js-citgm/job/citgm-smoker/3032/

CITGM results look fine to me.

@Trott Trott added the commit-queue Add this label to land a pull request using GitHub Actions. label Oct 24, 2022
@nodejs-github-bot nodejs-github-bot removed the commit-queue Add this label to land a pull request using GitHub Actions. label Oct 24, 2022
@nodejs-github-bot nodejs-github-bot merged commit fa7e08c into nodejs:main Oct 24, 2022
@nodejs-github-bot
Copy link
Collaborator

Landed in fa7e08c

@Trott Trott deleted the tabs-in-urls branch October 24, 2022 21:34
RafaelGSS pushed a commit that referenced this pull request Nov 1, 2022
WHATWG URL removes tab, new line, and carraige return characters before
processing URL strings. To narrow the differences between WHATWG URL and
url.parse(), and thus reduce opportunities for host spoofing etc. due to
differences between the two APIs, let's do the same with url.parse().

PR-URL: #45116
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: Tobias Nießen <tniessen@tnie.de>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
@RafaelGSS RafaelGSS mentioned this pull request Nov 1, 2022
RafaelGSS pushed a commit that referenced this pull request Nov 10, 2022
WHATWG URL removes tab, new line, and carraige return characters before
processing URL strings. To narrow the differences between WHATWG URL and
url.parse(), and thus reduce opportunities for host spoofing etc. due to
differences between the two APIs, let's do the same with url.parse().

PR-URL: #45116
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: Tobias Nießen <tniessen@tnie.de>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
danielleadams pushed a commit that referenced this pull request Dec 30, 2022
WHATWG URL removes tab, new line, and carraige return characters before
processing URL strings. To narrow the differences between WHATWG URL and
url.parse(), and thus reduce opportunities for host spoofing etc. due to
differences between the two APIs, let's do the same with url.parse().

PR-URL: #45116
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: Tobias Nießen <tniessen@tnie.de>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
danielleadams pushed a commit that referenced this pull request Dec 30, 2022
WHATWG URL removes tab, new line, and carraige return characters before
processing URL strings. To narrow the differences between WHATWG URL and
url.parse(), and thus reduce opportunities for host spoofing etc. due to
differences between the two APIs, let's do the same with url.parse().

PR-URL: #45116
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: Tobias Nießen <tniessen@tnie.de>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
danielleadams pushed a commit that referenced this pull request Jan 3, 2023
WHATWG URL removes tab, new line, and carraige return characters before
processing URL strings. To narrow the differences between WHATWG URL and
url.parse(), and thus reduce opportunities for host spoofing etc. due to
differences between the two APIs, let's do the same with url.parse().

PR-URL: #45116
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: Tobias Nießen <tniessen@tnie.de>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.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. needs-ci PRs that need a full CI run. url Issues and PRs related to the legacy built-in url module.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants