Skip to content

url: fix definitions of URL/SearchParams methods and accessors - #36799

Merged
aduh95 merged 2 commits into
nodejs:masterfrom
ExE-Boss:lib/url/fix-method-accessor-definitions
Feb 13, 2021
Merged

url: fix definitions of URL/SearchParams methods and accessors#36799
aduh95 merged 2 commits into
nodejs:masterfrom
ExE-Boss:lib/url/fix-method-accessor-definitions

Conversation

@ExE-Boss

@ExE-BossExE-Boss commented Jan 5, 2021

Copy link
Copy Markdown
Contributor

This ensures that:

Object.getOwnPropertyDescriptor(URL.prototype,'href').get.name==="get name";

and that:

Object.prototype.hasOwnProperty.call(URL.prototype.toString,"prototype")===false;

The changes to URLSearchParams were done to fix the [[HomeObject]] internal slot so that it points to the URLSearchParams.prototype object, rather than the object that’s passed to defineIDLClass.


Best reviewed with the “Hide whitespace changes” flag enabled: #36799?w=1

@aduh95

Copy link
Copy Markdown
Contributor

Would you kindly split this into several commits to help with code review please? GitHub UI isn't really helping to follow the moving parts here 😅

Comment threadlib/internal/url.js Outdated
Comment threadlib/internal/url.js Outdated
@ExE-Boss
ExE-Bossforce-pushed the lib/url/fix-method-accessor-definitions branch 2 times, most recently from 076b097 to 335ae15CompareJanuary 6, 2021 11:26
@PoojaDurgadPoojaDurgad added the request-ci Add this label to start a Jenkins CI on a PR. label Jan 13, 2021
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@aduh95aduh95 removed the request-ci Add this label to start a Jenkins CI on a PR. label Jan 13, 2021
@aduh95

Copy link
Copy Markdown
Contributor

@ExE-Boss This needs a rebase. If you have the time to split it into several commits (E.G.: one for URLSearchParams and another one for URL), that'd be nice.

@ExE-Boss

ExE-Boss commented Jan 19, 2021

Copy link
Copy Markdown
ContributorAuthor

@aduh95 I have split this into a move (0a49b9e) and edit (609a6eb?w=1) commit.

@ExE-Boss
ExE-Bossforce-pushed the lib/url/fix-method-accessor-definitions branch from 335ae15 to 23386ceCompareJanuary 19, 2021 02:28
@aduh95

Copy link
Copy Markdown
Contributor

Nit: upstreaming the tests to the wpt repo, so other implementers can use them, would be ideal.

@ExE-Boss
ExE-Boss requested a review from FlarnaJanuary 24, 2021 07:04
@FlarnaFlarna added whatwg-url Issues and PRs related to the WHATWG URL implementation. review wanted PRs that need reviews. labels Jan 25, 2021
@aduh95

aduh95 commented Feb 8, 2021

Copy link
Copy Markdown
Contributor

@aduh95

Copy link
Copy Markdown
Contributor

@ExE-Boss this needs a rebase.

@ExE-Boss
ExE-Bossforce-pushed the lib/url/fix-method-accessor-definitions branch from 23386ce to 609a6ebCompareFebruary 9, 2021 03:19
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@aduh95

Copy link
Copy Markdown
Contributor

There are some major perf improvements and also a few regressions for the legacy API for some reason:

 confidence improvement accuracy (*) (**) (***)
url/legacy-vs-whatwg-url-get-prop.jse=1 method='legacy' type='dot' *** 27.55 % ±8.58% ±11.43% ±14.89%
url/legacy-vs-whatwg-url-get-prop.jse=1 method='legacy' type='file' * 8.62 % ±8.49% ±11.29% ±14.70%
url/legacy-vs-whatwg-url-get-prop.jse=1 method='legacy' type='idn' *** 15.87 % ±8.52% ±11.34% ±14.77%
url/legacy-vs-whatwg-url-get-prop.jse=1 method='legacy' type='percent' ** 11.88 % ±6.88% ±9.15% ±11.92%
url/legacy-vs-whatwg-url-get-prop.jse=1 method='legacy' type='short' *** 17.15 % ±8.27% ±11.00% ±14.32%
url/legacy-vs-whatwg-url-parse.jsmethod='whatwg' e=1 type='short' withBase='false' * 7.52 % ±7.07% ±9.42% ±12.29%
url/legacy-vs-whatwg-url-searchparams-parse.jsn=1000000 method='legacy' searchParam='encodefake' * 2.29 % ±2.23% ±2.98% ±3.91%
url/legacy-vs-whatwg-url-serialize.jse=1 method='legacy' type='auth' *** -14.59 % ±6.53% ±8.70% ±11.35%
url/whatwg-url-idna.jsn=5000000 to='ascii' domain='some' * 4.16 % ±3.78% ±5.06% ±6.64%
url/whatwg-url-properties.jsprop='password' e=1 type='wpt' withBase='false' * -7.68 % ±6.31% ±8.39% ±10.92%
url/whatwg-url-properties.jsprop='password' e=1 type='wpt' withBase='true' * 6.17 % ±5.91% ±7.90% ±10.34%

WHATWG results look OK, I'm going to spawn another benchmark CI to see if the perf change on legacy API were just a flakiness.

Full benchmark results
 confidence improvement accuracy (*) (**) (***)
url/legacy-vs-whatwg-url-get-prop.jse=1 method='legacy' type='auth' -1.30 % ±6.87% ±9.14% ±11.91%
url/legacy-vs-whatwg-url-get-prop.jse=1 method='legacy' type='dot' *** 27.55 % ±8.58% ±11.43% ±14.89%
url/legacy-vs-whatwg-url-get-prop.jse=1 method='legacy' type='file' * 8.62 % ±8.49% ±11.29% ±14.70%
url/legacy-vs-whatwg-url-get-prop.jse=1 method='legacy' type='idn' *** 15.87 % ±8.52% ±11.34% ±14.77%
url/legacy-vs-whatwg-url-get-prop.jse=1 method='legacy' type='javascript' -0.35 % ±6.76% ±9.00% ±11.72%
url/legacy-vs-whatwg-url-get-prop.jse=1 method='legacy' type='long' 1.40 % ±10.27% ±13.67% ±17.79%
url/legacy-vs-whatwg-url-get-prop.jse=1 method='legacy' type='percent' ** 11.88 % ±6.88% ±9.15% ±11.92%
url/legacy-vs-whatwg-url-get-prop.jse=1 method='legacy' type='short' *** 17.15 % ±8.27% ±11.00% ±14.32%
url/legacy-vs-whatwg-url-get-prop.jse=1 method='legacy' type='wpt' 1.45 % ±9.59% ±12.76% ±16.63%
url/legacy-vs-whatwg-url-get-prop.jse=1 method='legacy' type='ws' -7.72 % ±8.30% ±11.05% ±14.38%
url/legacy-vs-whatwg-url-get-prop.jse=1 method='whatwg' type='auth' 1.69 % ±6.99% ±9.31% ±12.13%
url/legacy-vs-whatwg-url-get-prop.jse=1 method='whatwg' type='dot' -3.91 % ±6.41% ±8.53% ±11.10%
url/legacy-vs-whatwg-url-get-prop.jse=1 method='whatwg' type='file' -4.77 % ±8.79% ±11.71% ±15.28%
url/legacy-vs-whatwg-url-get-prop.jse=1 method='whatwg' type='idn' 0.01 % ±6.54% ±8.71% ±11.34%
url/legacy-vs-whatwg-url-get-prop.jse=1 method='whatwg' type='javascript' 1.61 % ±7.89% ±10.49% ±13.66%
url/legacy-vs-whatwg-url-get-prop.jse=1 method='whatwg' type='long' 4.67 % ±9.23% ±12.31% ±16.06%
url/legacy-vs-whatwg-url-get-prop.jse=1 method='whatwg' type='percent' 1.69 % ±7.07% ±9.41% ±12.24%
url/legacy-vs-whatwg-url-get-prop.jse=1 method='whatwg' type='short' -7.02 % ±11.15% ±14.90% ±19.53%
url/legacy-vs-whatwg-url-get-prop.jse=1 method='whatwg' type='wpt' -0.32 % ±8.12% ±10.81% ±14.08%
url/legacy-vs-whatwg-url-get-prop.jse=1 method='whatwg' type='ws' -7.57 % ±11.21% ±15.03% ±19.80%
url/legacy-vs-whatwg-url-parse.jsmethod='legacy' e=1 type='auth' withBase='false' 3.17 % ±4.01% ±5.33% ±6.94%
url/legacy-vs-whatwg-url-parse.jsmethod='legacy' e=1 type='auth' withBase='true' 2.58 % ±5.84% ±7.77% ±10.12%
url/legacy-vs-whatwg-url-parse.jsmethod='legacy' e=1 type='dot' withBase='false' 3.32 % ±7.14% ±9.52% ±12.43%
url/legacy-vs-whatwg-url-parse.jsmethod='legacy' e=1 type='dot' withBase='true' 0.60 % ±4.53% ±6.02% ±7.84%
url/legacy-vs-whatwg-url-parse.jsmethod='legacy' e=1 type='file' withBase='false' 5.79 % ±7.68% ±10.27% ±13.47%
url/legacy-vs-whatwg-url-parse.jsmethod='legacy' e=1 type='file' withBase='true' -0.54 % ±5.77% ±7.68% ±10.00%
url/legacy-vs-whatwg-url-parse.jsmethod='legacy' e=1 type='idn' withBase='false' 1.05 % ±6.13% ±8.16% ±10.64%
url/legacy-vs-whatwg-url-parse.jsmethod='legacy' e=1 type='idn' withBase='true' 1.89 % ±4.51% ±6.01% ±7.83%
url/legacy-vs-whatwg-url-parse.jsmethod='legacy' e=1 type='javascript' withBase='false' -0.46 % ±6.48% ±8.62% ±11.23%
url/legacy-vs-whatwg-url-parse.jsmethod='legacy' e=1 type='javascript' withBase='true' -2.37 % ±7.43% ±9.89% ±12.87%
url/legacy-vs-whatwg-url-parse.jsmethod='legacy' e=1 type='long' withBase='false' 3.74 % ±3.84% ±5.12% ±6.69%
url/legacy-vs-whatwg-url-parse.jsmethod='legacy' e=1 type='long' withBase='true' 4.61 % ±4.97% ±6.64% ±8.72%
url/legacy-vs-whatwg-url-parse.jsmethod='legacy' e=1 type='percent' withBase='false' 0.21 % ±6.58% ±8.79% ±11.52%
url/legacy-vs-whatwg-url-parse.jsmethod='legacy' e=1 type='percent' withBase='true' 2.13 % ±5.79% ±7.72% ±10.08%
url/legacy-vs-whatwg-url-parse.jsmethod='legacy' e=1 type='short' withBase='false' 0.63 % ±5.62% ±7.49% ±9.75%
url/legacy-vs-whatwg-url-parse.jsmethod='legacy' e=1 type='short' withBase='true' 0.16 % ±5.60% ±7.47% ±9.75%
url/legacy-vs-whatwg-url-parse.jsmethod='legacy' e=1 type='wpt' withBase='false' -0.17 % ±5.76% ±7.66% ±9.97%
url/legacy-vs-whatwg-url-parse.jsmethod='legacy' e=1 type='wpt' withBase='true' 2.14 % ±4.99% ±6.64% ±8.66%
url/legacy-vs-whatwg-url-parse.jsmethod='legacy' e=1 type='ws' withBase='false' 0.86 % ±6.11% ±8.13% ±10.58%
url/legacy-vs-whatwg-url-parse.jsmethod='legacy' e=1 type='ws' withBase='true' 1.38 % ±5.18% ±6.91% ±9.04%
url/legacy-vs-whatwg-url-parse.jsmethod='whatwg' e=1 type='auth' withBase='false' 5.14 % ±6.76% ±9.00% ±11.71%
url/legacy-vs-whatwg-url-parse.jsmethod='whatwg' e=1 type='auth' withBase='true' 0.09 % ±6.30% ±8.38% ±10.91%
url/legacy-vs-whatwg-url-parse.jsmethod='whatwg' e=1 type='dot' withBase='false' 0.19 % ±8.41% ±11.19% ±14.58%
url/legacy-vs-whatwg-url-parse.jsmethod='whatwg' e=1 type='dot' withBase='true' 3.01 % ±6.55% ±8.73% ±11.39%
url/legacy-vs-whatwg-url-parse.jsmethod='whatwg' e=1 type='file' withBase='false' 5.20 % ±7.50% ±10.02% ±13.14%
url/legacy-vs-whatwg-url-parse.jsmethod='whatwg' e=1 type='file' withBase='true' 1.69 % ±5.39% ±7.17% ±9.33%
url/legacy-vs-whatwg-url-parse.jsmethod='whatwg' e=1 type='idn' withBase='false' 5.78 % ±6.41% ±8.54% ±11.16%
url/legacy-vs-whatwg-url-parse.jsmethod='whatwg' e=1 type='idn' withBase='true' -0.76 % ±5.94% ±7.91% ±10.29%
url/legacy-vs-whatwg-url-parse.jsmethod='whatwg' e=1 type='javascript' withBase='false' 3.47 % ±6.85% ±9.12% ±11.89%
url/legacy-vs-whatwg-url-parse.jsmethod='whatwg' e=1 type='javascript' withBase='true' 0.26 % ±4.78% ±6.35% ±8.27%
url/legacy-vs-whatwg-url-parse.jsmethod='whatwg' e=1 type='long' withBase='false' 0.78 % ±4.62% ±6.15% ±8.00%
url/legacy-vs-whatwg-url-parse.jsmethod='whatwg' e=1 type='long' withBase='true' 3.12 % ±3.54% ±4.71% ±6.13%
url/legacy-vs-whatwg-url-parse.jsmethod='whatwg' e=1 type='percent' withBase='false' 0.67 % ±7.91% ±10.56% ±13.81%
url/legacy-vs-whatwg-url-parse.jsmethod='whatwg' e=1 type='percent' withBase='true' 4.05 % ±6.03% ±8.03% ±10.46%
url/legacy-vs-whatwg-url-parse.jsmethod='whatwg' e=1 type='short' withBase='false' * 7.52 % ±7.07% ±9.42% ±12.29%
url/legacy-vs-whatwg-url-parse.jsmethod='whatwg' e=1 type='short' withBase='true' 3.17 % ±4.91% ±6.54% ±8.53%
url/legacy-vs-whatwg-url-parse.jsmethod='whatwg' e=1 type='wpt' withBase='false' 5.23 % ±5.92% ±7.92% ±10.39%
url/legacy-vs-whatwg-url-parse.jsmethod='whatwg' e=1 type='wpt' withBase='true' 4.80 % ±5.93% ±7.92% ±10.36%
url/legacy-vs-whatwg-url-parse.jsmethod='whatwg' e=1 type='ws' withBase='false' 4.17 % ±6.60% ±8.78% ±11.42%
url/legacy-vs-whatwg-url-parse.jsmethod='whatwg' e=1 type='ws' withBase='true' -0.00 % ±6.05% ±8.06% ±10.51%
url/legacy-vs-whatwg-url-searchparams-parse.jsn=1000000 method='legacy' searchParam='altspaces' -1.54 % ±2.82% ±3.77% ±4.95%
url/legacy-vs-whatwg-url-searchparams-parse.jsn=1000000 method='legacy' searchParam='encodefake' * 2.29 % ±2.23% ±2.98% ±3.91%
url/legacy-vs-whatwg-url-searchparams-parse.jsn=1000000 method='legacy' searchParam='encodelast' 0.91 % ±5.06% ±6.74% ±8.77%
url/legacy-vs-whatwg-url-searchparams-parse.jsn=1000000 method='legacy' searchParam='encodemany' -0.82 % ±1.75% ±2.33% ±3.04%
url/legacy-vs-whatwg-url-searchparams-parse.jsn=1000000 method='legacy' searchParam='manyblankpairs' 2.37 % ±5.74% ±7.67% ±10.03%
url/legacy-vs-whatwg-url-searchparams-parse.jsn=1000000 method='legacy' searchParam='manypairs' 0.55 % ±1.52% ±2.03% ±2.67%
url/legacy-vs-whatwg-url-searchparams-parse.jsn=1000000 method='legacy' searchParam='multicharsep' -3.88 % ±4.12% ±5.54% ±7.33%
url/legacy-vs-whatwg-url-searchparams-parse.jsn=1000000 method='legacy' searchParam='multivalue' -2.02 % ±2.99% ±3.98% ±5.18%
url/legacy-vs-whatwg-url-searchparams-parse.jsn=1000000 method='legacy' searchParam='multivaluemany' 0.46 % ±1.26% ±1.68% ±2.18%
url/legacy-vs-whatwg-url-searchparams-parse.jsn=1000000 method='legacy' searchParam='noencode' -1.97 % ±5.15% ±6.85% ±8.93%
url/legacy-vs-whatwg-url-searchparams-parse.jsn=1000000 method='whatwg' searchParam='altspaces' 1.42 % ±3.23% ±4.30% ±5.60%
url/legacy-vs-whatwg-url-searchparams-parse.jsn=1000000 method='whatwg' searchParam='encodefake' 1.35 % ±2.96% ±3.98% ±5.27%
url/legacy-vs-whatwg-url-searchparams-parse.jsn=1000000 method='whatwg' searchParam='encodelast' 2.45 % ±4.45% ±5.95% ±7.79%
url/legacy-vs-whatwg-url-searchparams-parse.jsn=1000000 method='whatwg' searchParam='encodemany' 3.27 % ±4.51% ±6.00% ±7.81%
url/legacy-vs-whatwg-url-searchparams-parse.jsn=1000000 method='whatwg' searchParam='manyblankpairs' 0.45 % ±2.47% ±3.29% ±4.29%
url/legacy-vs-whatwg-url-searchparams-parse.jsn=1000000 method='whatwg' searchParam='manypairs' -0.25 % ±3.69% ±4.92% ±6.41%
url/legacy-vs-whatwg-url-searchparams-parse.jsn=1000000 method='whatwg' searchParam='multicharsep' 0.13 % ±0.82% ±1.09% ±1.43%
url/legacy-vs-whatwg-url-searchparams-parse.jsn=1000000 method='whatwg' searchParam='multivalue' 1.01 % ±3.78% ±5.08% ±6.73%
url/legacy-vs-whatwg-url-searchparams-parse.jsn=1000000 method='whatwg' searchParam='multivaluemany' -0.67 % ±3.13% ±4.17% ±5.43%
url/legacy-vs-whatwg-url-searchparams-parse.jsn=1000000 method='whatwg' searchParam='noencode' -3.67 % ±7.92% ±10.56% ±13.79%
url/legacy-vs-whatwg-url-searchparams-serialize.jsn=1000000 method='legacy' searchParam='altspaces' 0.12 % ±1.71% ±2.28% ±2.96%
url/legacy-vs-whatwg-url-searchparams-serialize.jsn=1000000 method='legacy' searchParam='encodefake' 0.40 % ±1.13% ±1.50% ±1.95%
url/legacy-vs-whatwg-url-searchparams-serialize.jsn=1000000 method='legacy' searchParam='encodelast' 1.15 % ±3.18% ±4.23% ±5.51%
url/legacy-vs-whatwg-url-searchparams-serialize.jsn=1000000 method='legacy' searchParam='encodemany' 0.49 % ±2.24% ±2.98% ±3.89%
url/legacy-vs-whatwg-url-searchparams-serialize.jsn=1000000 method='legacy' searchParam='manyblankpairs' -4.49 % ±8.03% ±10.78% ±14.20%
url/legacy-vs-whatwg-url-searchparams-serialize.jsn=1000000 method='legacy' searchParam='manypairs' -0.87 % ±2.20% ±2.93% ±3.82%
url/legacy-vs-whatwg-url-searchparams-serialize.jsn=1000000 method='legacy' searchParam='multicharsep' -0.03 % ±1.77% ±2.36% ±3.08%
url/legacy-vs-whatwg-url-searchparams-serialize.jsn=1000000 method='legacy' searchParam='multivalue' 0.93 % ±1.53% ±2.03% ±2.64%
url/legacy-vs-whatwg-url-searchparams-serialize.jsn=1000000 method='legacy' searchParam='multivaluemany' 1.07 % ±2.69% ±3.58% ±4.67%
url/legacy-vs-whatwg-url-searchparams-serialize.jsn=1000000 method='legacy' searchParam='noencode' 1.15 % ±3.38% ±4.51% ±5.90%
url/legacy-vs-whatwg-url-searchparams-serialize.jsn=1000000 method='whatwg' searchParam='altspaces' -0.24 % ±6.58% ±8.77% ±11.43%
url/legacy-vs-whatwg-url-searchparams-serialize.jsn=1000000 method='whatwg' searchParam='encodefake' -4.04 % ±5.13% ±6.90% ±9.13%
url/legacy-vs-whatwg-url-searchparams-serialize.jsn=1000000 method='whatwg' searchParam='encodelast' 2.87 % ±5.17% ±6.96% ±9.22%
url/legacy-vs-whatwg-url-searchparams-serialize.jsn=1000000 method='whatwg' searchParam='encodemany' -0.98 % ±4.09% ±5.50% ±7.27%
url/legacy-vs-whatwg-url-searchparams-serialize.jsn=1000000 method='whatwg' searchParam='manyblankpairs' 0.83 % ±12.64% ±16.81% ±21.88%
url/legacy-vs-whatwg-url-searchparams-serialize.jsn=1000000 method='whatwg' searchParam='manypairs' -0.94 % ±2.33% ±3.13% ±4.13%
url/legacy-vs-whatwg-url-searchparams-serialize.jsn=1000000 method='whatwg' searchParam='multicharsep' -0.52 % ±4.36% ±5.87% ±7.79%
url/legacy-vs-whatwg-url-searchparams-serialize.jsn=1000000 method='whatwg' searchParam='multivalue' 1.52 % ±3.84% ±5.17% ±6.85%
url/legacy-vs-whatwg-url-searchparams-serialize.jsn=1000000 method='whatwg' searchParam='multivaluemany' -2.06 % ±3.59% ±4.83% ±6.39%
url/legacy-vs-whatwg-url-searchparams-serialize.jsn=1000000 method='whatwg' searchParam='noencode' 0.08 % ±1.09% ±1.45% ±1.89%
url/legacy-vs-whatwg-url-serialize.jse=1 method='legacy' type='auth' *** -14.59 % ±6.53% ±8.70% ±11.35%
url/legacy-vs-whatwg-url-serialize.jse=1 method='legacy' type='dot' -7.80 % ±10.88% ±14.58% ±19.19%
url/legacy-vs-whatwg-url-serialize.jse=1 method='legacy' type='file' -5.65 % ±10.82% ±14.51% ±19.12%
url/legacy-vs-whatwg-url-serialize.jse=1 method='legacy' type='idn' 0.98 % ±7.23% ±9.62% ±12.53%
url/legacy-vs-whatwg-url-serialize.jse=1 method='legacy' type='javascript' 0.37 % ±5.55% ±7.39% ±9.64%
url/legacy-vs-whatwg-url-serialize.jse=1 method='legacy' type='long' 9.43 % ±11.68% ±15.70% ±20.75%
url/legacy-vs-whatwg-url-serialize.jse=1 method='legacy' type='percent' -7.60 % ±9.36% ±12.54% ±16.50%
url/legacy-vs-whatwg-url-serialize.jse=1 method='legacy' type='short' -5.36 % ±5.85% ±7.79% ±10.15%
url/legacy-vs-whatwg-url-serialize.jse=1 method='legacy' type='wpt' -8.83 % ±10.36% ±13.91% ±18.36%
url/legacy-vs-whatwg-url-serialize.jse=1 method='legacy' type='ws' -6.36 % ±11.12% ±14.91% ±19.63%
url/legacy-vs-whatwg-url-serialize.jse=1 method='whatwg' type='auth' -2.67 % ±10.91% ±14.63% ±19.27%
url/legacy-vs-whatwg-url-serialize.jse=1 method='whatwg' type='dot' -6.72 % ±10.37% ±13.92% ±18.35%
url/legacy-vs-whatwg-url-serialize.jse=1 method='whatwg' type='file' -1.98 % ±12.09% ±16.20% ±21.31%
url/legacy-vs-whatwg-url-serialize.jse=1 method='whatwg' type='idn' -0.58 % ±8.17% ±10.87% ±14.14%
url/legacy-vs-whatwg-url-serialize.jse=1 method='whatwg' type='javascript' -2.09 % ±6.09% ±8.14% ±10.66%
url/legacy-vs-whatwg-url-serialize.jse=1 method='whatwg' type='long' 11.55 % ±11.91% ±16.00% ±21.16%
url/legacy-vs-whatwg-url-serialize.jse=1 method='whatwg' type='percent' -8.76 % ±9.96% ±13.38% ±17.68%
url/legacy-vs-whatwg-url-serialize.jse=1 method='whatwg' type='short' 1.43 % ±7.88% ±10.49% ±13.66%
url/legacy-vs-whatwg-url-serialize.jse=1 method='whatwg' type='wpt' 0.03 % ±6.01% ±8.01% ±10.45%
url/legacy-vs-whatwg-url-serialize.jse=1 method='whatwg' type='ws' -3.90 % ±10.74% ±14.41% ±19.02%
url/whatwg-url-idna.jsn=5000000 to='ascii' domain='all' -0.17 % ±2.38% ±3.16% ±4.12%
url/whatwg-url-idna.jsn=5000000 to='ascii' domain='empty' -2.58 % ±6.00% ±8.00% ±10.44%
url/whatwg-url-idna.jsn=5000000 to='ascii' domain='none' -0.82 % ±1.53% ±2.03% ±2.64%
url/whatwg-url-idna.jsn=5000000 to='ascii' domain='nonstring' 1.42 % ±2.99% ±4.01% ±5.28%
url/whatwg-url-idna.jsn=5000000 to='ascii' domain='some' * 4.16 % ±3.78% ±5.06% ±6.64%
url/whatwg-url-idna.jsn=5000000 to='unicode' domain='all' 0.70 % ±1.51% ±2.00% ±2.61%
url/whatwg-url-idna.jsn=5000000 to='unicode' domain='empty' -0.96 % ±4.93% ±6.62% ±8.74%
url/whatwg-url-idna.jsn=5000000 to='unicode' domain='none' 0.66 % ±1.99% ±2.65% ±3.44%
url/whatwg-url-idna.jsn=5000000 to='unicode' domain='nonstring' -0.71 % ±5.37% ±7.14% ±9.30%
url/whatwg-url-idna.jsn=5000000 to='unicode' domain='some' 2.18 % ±2.39% ±3.20% ±4.20%
url/whatwg-url-properties.jsprop='hash' e=1 type='wpt' withBase='false' -2.55 % ±5.79% ±7.71% ±10.03%
url/whatwg-url-properties.jsprop='hash' e=1 type='wpt' withBase='true' -1.05 % ±6.93% ±9.22% ±12.01%
url/whatwg-url-properties.jsprop='host' e=1 type='wpt' withBase='false' 4.19 % ±6.59% ±8.77% ±11.42%
url/whatwg-url-properties.jsprop='host' e=1 type='wpt' withBase='true' -4.30 % ±6.44% ±8.61% ±11.29%
url/whatwg-url-properties.jsprop='hostname' e=1 type='wpt' withBase='false' 0.99 % ±7.14% ±9.51% ±12.40%
url/whatwg-url-properties.jsprop='hostname' e=1 type='wpt' withBase='true' 1.15 % ±5.00% ±6.65% ±8.65%
url/whatwg-url-properties.jsprop='href' e=1 type='wpt' withBase='false' 0.63 % ±10.54% ±14.04% ±18.31%
url/whatwg-url-properties.jsprop='href' e=1 type='wpt' withBase='true' -2.19 % ±6.28% ±8.36% ±10.88%
url/whatwg-url-properties.jsprop='origin' e=1 type='wpt' withBase='false' 2.98 % ±5.58% ±7.45% ±9.73%
url/whatwg-url-properties.jsprop='origin' e=1 type='wpt' withBase='true' 6.35 % ±6.61% ±8.82% ±11.52%
url/whatwg-url-properties.jsprop='password' e=1 type='wpt' withBase='false' * -7.68 % ±6.31% ±8.39% ±10.92%
url/whatwg-url-properties.jsprop='password' e=1 type='wpt' withBase='true' * 6.17 % ±5.91% ±7.90% ±10.34%
url/whatwg-url-properties.jsprop='pathname' e=1 type='wpt' withBase='false' 4.08 % ±6.55% ±8.71% ±11.35%
url/whatwg-url-properties.jsprop='pathname' e=1 type='wpt' withBase='true' 4.44 % ±6.12% ±8.15% ±10.63%
url/whatwg-url-properties.jsprop='port' e=1 type='wpt' withBase='false' -1.39 % ±5.35% ±7.12% ±9.28%
url/whatwg-url-properties.jsprop='port' e=1 type='wpt' withBase='true' -4.74 % ±7.03% ±9.40% ±12.31%
url/whatwg-url-properties.jsprop='protocol' e=1 type='wpt' withBase='false' -0.53 % ±6.38% ±8.49% ±11.06%
url/whatwg-url-properties.jsprop='protocol' e=1 type='wpt' withBase='true' -1.52 % ±3.99% ±5.30% ±6.91%
url/whatwg-url-properties.jsprop='search' e=1 type='wpt' withBase='false' 4.47 % ±7.74% ±10.35% ±13.57%
url/whatwg-url-properties.jsprop='search' e=1 type='wpt' withBase='true' -1.51 % ±6.99% ±9.31% ±12.12%
url/whatwg-url-properties.jsprop='searchParams' e=1 type='wpt' withBase='false' -3.27 % ±6.62% ±8.81% ±11.46%
url/whatwg-url-properties.jsprop='searchParams' e=1 type='wpt' withBase='true' -2.95 % ±4.96% ±6.61% ±8.61%
url/whatwg-url-properties.jsprop='username' e=1 type='wpt' withBase='false' -0.30 % ±5.53% ±7.36% ±9.58%
url/whatwg-url-properties.jsprop='username' e=1 type='wpt' withBase='true' -0.44 % ±7.24% ±9.64% ±12.55%
Be aware that when doing many comparisons the risk of a false-positive
result increases. In this case, there are 154 comparisons, you can thus
expect the following amount of false-positive results:
7.70 false positives, when considering a 5% risk acceptance (*, **, ***),
1.54 false positives, when considering a 1% risk acceptance (**, ***),
0.15 false positives, when considering a 0.1% risk acceptance (***)

@aduh95

aduh95 commented Feb 9, 2021

Copy link
Copy Markdown
Contributor

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

EDIT: it got similar results 🤷‍♂️

 confidence improvement accuracy (*) (**) (***)
url/legacy-vs-whatwg-url-get-prop.jse=1 method='legacy' type='dot' ** 10.04 % ±5.83% ±7.77% ±10.11%
url/legacy-vs-whatwg-url-get-prop.jse=1 method='legacy' type='file' *** 16.91 % ±8.60% ±11.44% ±14.88%
url/legacy-vs-whatwg-url-get-prop.jse=1 method='legacy' type='idn' *** 12.16 % ±4.88% ±6.50% ±8.46%
url/legacy-vs-whatwg-url-get-prop.jse=1 method='legacy' type='percent' *** 13.43 % ±7.62% ±10.13% ±13.19%
url/legacy-vs-whatwg-url-get-prop.jse=1 method='whatwg' type='short' * -6.24 % ±6.04% ±8.06% ±10.56%
url/legacy-vs-whatwg-url-parse.jsmethod='legacy' e=1 type='javascript' withBase='false' * 6.25 % ±6.24% ±8.32% ±10.85%
url/legacy-vs-whatwg-url-parse.jsmethod='whatwg' e=1 type='auth' withBase='false' ** 10.62 % ±7.32% ±9.78% ±12.81%
url/legacy-vs-whatwg-url-parse.jsmethod='whatwg' e=1 type='percent' withBase='false' ** 8.04 % ±5.92% ±7.91% ±10.37%
url/legacy-vs-whatwg-url-parse.jsmethod='whatwg' e=1 type='percent' withBase='true' * 6.58 % ±5.11% ±6.81% ±8.88%
url/legacy-vs-whatwg-url-serialize.jse=1 method='legacy' type='auth' ** -11.00 % ±7.64% ±10.16% ±13.23%
url/url-resolve.jsn=100000 path='foo/bar' href='long' * -4.48 % ±4.45% ±5.93% ±7.74%
url/url-resolve.jsn=100000 path='up' href='file' * -5.01 % ±4.89% ±6.52% ±8.49%
url/url-resolve.jsn=100000 path='up' href='idn' * -4.81 % ±4.12% ±5.51% ±7.21%
url/url-resolve.jsn=100000 path='up' href='percent' ** 7.46 % ±4.85% ±6.48% ±8.51%
url/url-searchparams-sort.jsn=1000000 type='sorted' * 1.00 % ±0.91% ±1.21% ±1.58%
url/usvstring.jsn=50000000 input='valid' * -2.23 % ±1.81% ±2.41% ±3.17%
url/whatwg-url-properties.jsprop='host' e=1 type='wpt' withBase='false' * -7.14 % ±6.03% ±8.04% ±10.49%
url/whatwg-url-properties.jsprop='password' e=1 type='wpt' withBase='true' * -5.80 % ±4.63% ±6.18% ±8.08%
url/whatwg-url-properties.jsprop='pathname' e=1 type='wpt' withBase='false' * -7.58 % ±6.62% ±8.84% ±11.58%
url/whatwg-url-properties.jsprop='username' e=1 type='wpt' withBase='true' * -6.39 % ±5.68% ±7.56% ±9.86%
Details
 confidence improvement accuracy (*) (**) (***)
url/legacy-vs-whatwg-url-get-prop.jse=1 method='legacy' type='auth' -3.82 % ±7.80% ±10.38% ±13.52%
url/legacy-vs-whatwg-url-get-prop.jse=1 method='legacy' type='dot' ** 10.04 % ±5.83% ±7.77% ±10.11%
url/legacy-vs-whatwg-url-get-prop.jse=1 method='legacy' type='file' *** 16.91 % ±8.60% ±11.44% ±14.88%
url/legacy-vs-whatwg-url-get-prop.jse=1 method='legacy' type='idn' *** 12.16 % ±4.88% ±6.50% ±8.46%
url/legacy-vs-whatwg-url-get-prop.jse=1 method='legacy' type='javascript' -3.99 % ±5.87% ±7.81% ±10.18%
url/legacy-vs-whatwg-url-get-prop.jse=1 method='legacy' type='long' 0.39 % ±8.17% ±10.87% ±14.15%
url/legacy-vs-whatwg-url-get-prop.jse=1 method='legacy' type='percent' *** 13.43 % ±7.62% ±10.13% ±13.19%
url/legacy-vs-whatwg-url-get-prop.jse=1 method='legacy' type='short' 5.57 % ±6.63% ±8.82% ±11.49%
url/legacy-vs-whatwg-url-get-prop.jse=1 method='legacy' type='wpt' -2.61 % ±6.77% ±9.02% ±11.76%
url/legacy-vs-whatwg-url-get-prop.jse=1 method='legacy' type='ws' 1.57 % ±7.95% ±10.58% ±13.78%
url/legacy-vs-whatwg-url-get-prop.jse=1 method='whatwg' type='auth' -1.31 % ±5.19% ±6.90% ±8.98%
url/legacy-vs-whatwg-url-get-prop.jse=1 method='whatwg' type='dot' -2.50 % ±6.32% ±8.42% ±10.97%
url/legacy-vs-whatwg-url-get-prop.jse=1 method='whatwg' type='file' 3.60 % ±6.13% ±8.17% ±10.67%
url/legacy-vs-whatwg-url-get-prop.jse=1 method='whatwg' type='idn' -1.23 % ±4.74% ±6.30% ±8.21%
url/legacy-vs-whatwg-url-get-prop.jse=1 method='whatwg' type='javascript' 0.77 % ±6.13% ±8.19% ±10.72%
url/legacy-vs-whatwg-url-get-prop.jse=1 method='whatwg' type='long' -1.55 % ±5.84% ±7.77% ±10.11%
url/legacy-vs-whatwg-url-get-prop.jse=1 method='whatwg' type='percent' 2.70 % ±5.91% ±7.87% ±10.27%
url/legacy-vs-whatwg-url-get-prop.jse=1 method='whatwg' type='short' * -6.24 % ±6.04% ±8.06% ±10.56%
url/legacy-vs-whatwg-url-get-prop.jse=1 method='whatwg' type='wpt' -1.21 % ±6.94% ±9.24% ±12.04%
url/legacy-vs-whatwg-url-get-prop.jse=1 method='whatwg' type='ws' -2.01 % ±6.38% ±8.50% ±11.06%
url/legacy-vs-whatwg-url-parse.jsmethod='legacy' e=1 type='auth' withBase='false' 3.27 % ±5.19% ±6.93% ±9.06%
url/legacy-vs-whatwg-url-parse.jsmethod='legacy' e=1 type='auth' withBase='true' -2.35 % ±5.22% ±6.94% ±9.04%
url/legacy-vs-whatwg-url-parse.jsmethod='legacy' e=1 type='dot' withBase='false' 0.84 % ±5.70% ±7.60% ±9.93%
url/legacy-vs-whatwg-url-parse.jsmethod='legacy' e=1 type='dot' withBase='true' -0.23 % ±7.49% ±9.96% ±12.97%
url/legacy-vs-whatwg-url-parse.jsmethod='legacy' e=1 type='file' withBase='false' 1.68 % ±7.71% ±10.27% ±13.37%
url/legacy-vs-whatwg-url-parse.jsmethod='legacy' e=1 type='file' withBase='true' 0.58 % ±6.60% ±8.79% ±11.48%
url/legacy-vs-whatwg-url-parse.jsmethod='legacy' e=1 type='idn' withBase='false' 5.19 % ±6.53% ±8.73% ±11.43%
url/legacy-vs-whatwg-url-parse.jsmethod='legacy' e=1 type='idn' withBase='true' 0.14 % ±6.39% ±8.50% ±11.07%
url/legacy-vs-whatwg-url-parse.jsmethod='legacy' e=1 type='javascript' withBase='false' * 6.25 % ±6.24% ±8.32% ±10.85%
url/legacy-vs-whatwg-url-parse.jsmethod='legacy' e=1 type='javascript' withBase='true' 6.85 % ±6.87% ±9.19% ±12.06%
url/legacy-vs-whatwg-url-parse.jsmethod='legacy' e=1 type='long' withBase='false' -0.67 % ±2.99% ±3.99% ±5.22%
url/legacy-vs-whatwg-url-parse.jsmethod='legacy' e=1 type='long' withBase='true' 2.92 % ±3.74% ±4.99% ±6.54%
url/legacy-vs-whatwg-url-parse.jsmethod='legacy' e=1 type='percent' withBase='false' -1.43 % ±6.24% ±8.31% ±10.81%
url/legacy-vs-whatwg-url-parse.jsmethod='legacy' e=1 type='percent' withBase='true' -0.27 % ±5.26% ±7.01% ±9.14%
url/legacy-vs-whatwg-url-parse.jsmethod='legacy' e=1 type='short' withBase='false' 4.27 % ±4.68% ±6.23% ±8.11%
url/legacy-vs-whatwg-url-parse.jsmethod='legacy' e=1 type='short' withBase='true' 2.16 % ±5.68% ±7.57% ±9.89%
url/legacy-vs-whatwg-url-parse.jsmethod='legacy' e=1 type='wpt' withBase='false' 3.15 % ±6.11% ±8.14% ±10.61%
url/legacy-vs-whatwg-url-parse.jsmethod='legacy' e=1 type='wpt' withBase='true' 3.49 % ±4.84% ±6.45% ±8.40%
url/legacy-vs-whatwg-url-parse.jsmethod='legacy' e=1 type='ws' withBase='false' -1.12 % ±4.54% ±6.05% ±7.89%
url/legacy-vs-whatwg-url-parse.jsmethod='legacy' e=1 type='ws' withBase='true' 1.14 % ±5.65% ±7.52% ±9.79%
url/legacy-vs-whatwg-url-parse.jsmethod='whatwg' e=1 type='auth' withBase='false' ** 10.62 % ±7.32% ±9.78% ±12.81%
url/legacy-vs-whatwg-url-parse.jsmethod='whatwg' e=1 type='auth' withBase='true' 1.03 % ±5.21% ±6.94% ±9.04%
url/legacy-vs-whatwg-url-parse.jsmethod='whatwg' e=1 type='dot' withBase='false' -3.68 % ±6.06% ±8.06% ±10.49%
url/legacy-vs-whatwg-url-parse.jsmethod='whatwg' e=1 type='dot' withBase='true' 2.21 % ±5.69% ±7.58% ±9.87%
url/legacy-vs-whatwg-url-parse.jsmethod='whatwg' e=1 type='file' withBase='false' 3.30 % ±4.47% ±5.96% ±7.76%
url/legacy-vs-whatwg-url-parse.jsmethod='whatwg' e=1 type='file' withBase='true' 0.22 % ±5.80% ±7.72% ±10.05%
url/legacy-vs-whatwg-url-parse.jsmethod='whatwg' e=1 type='idn' withBase='false' 5.10 % ±5.12% ±6.82% ±8.87%
url/legacy-vs-whatwg-url-parse.jsmethod='whatwg' e=1 type='idn' withBase='true' 4.05 % ±5.02% ±6.69% ±8.71%
url/legacy-vs-whatwg-url-parse.jsmethod='whatwg' e=1 type='javascript' withBase='false' -0.88 % ±6.01% ±8.02% ±10.48%
url/legacy-vs-whatwg-url-parse.jsmethod='whatwg' e=1 type='javascript' withBase='true' 2.96 % ±6.42% ±8.56% ±11.18%
url/legacy-vs-whatwg-url-parse.jsmethod='whatwg' e=1 type='long' withBase='false' -2.78 % ±6.06% ±8.06% ±10.49%
url/legacy-vs-whatwg-url-parse.jsmethod='whatwg' e=1 type='long' withBase='true' 1.82 % ±5.64% ±7.51% ±9.78%
url/legacy-vs-whatwg-url-parse.jsmethod='whatwg' e=1 type='percent' withBase='false' ** 8.04 % ±5.92% ±7.91% ±10.37%
url/legacy-vs-whatwg-url-parse.jsmethod='whatwg' e=1 type='percent' withBase='true' * 6.58 % ±5.11% ±6.81% ±8.88%
url/legacy-vs-whatwg-url-parse.jsmethod='whatwg' e=1 type='short' withBase='false' 3.81 % ±7.22% ±9.63% ±12.58%
url/legacy-vs-whatwg-url-parse.jsmethod='whatwg' e=1 type='short' withBase='true' 1.42 % ±3.77% ±5.01% ±6.53%
url/legacy-vs-whatwg-url-parse.jsmethod='whatwg' e=1 type='wpt' withBase='false' -4.21 % ±4.35% ±5.79% ±7.53%
url/legacy-vs-whatwg-url-parse.jsmethod='whatwg' e=1 type='wpt' withBase='true' 0.46 % ±4.86% ±6.47% ±8.43%
url/legacy-vs-whatwg-url-parse.jsmethod='whatwg' e=1 type='ws' withBase='false' 4.56 % ±7.90% ±10.51% ±13.69%
url/legacy-vs-whatwg-url-parse.jsmethod='whatwg' e=1 type='ws' withBase='true' -0.65 % ±5.95% ±7.92% ±10.31%
url/legacy-vs-whatwg-url-searchparams-parse.jsn=1000000 method='legacy' searchParam='altspaces' 3.53 % ±3.64% ±4.84% ±6.31%
url/legacy-vs-whatwg-url-searchparams-parse.jsn=1000000 method='legacy' searchParam='encodefake' 2.08 % ±3.29% ±4.38% ±5.70%
url/legacy-vs-whatwg-url-searchparams-parse.jsn=1000000 method='legacy' searchParam='encodelast' -0.23 % ±2.61% ±3.47% ±4.52%
url/legacy-vs-whatwg-url-searchparams-parse.jsn=1000000 method='legacy' searchParam='encodemany' -2.58 % ±3.01% ±4.03% ±5.30%
url/legacy-vs-whatwg-url-searchparams-parse.jsn=1000000 method='legacy' searchParam='manyblankpairs' -1.58 % ±4.97% ±6.67% ±8.78%
url/legacy-vs-whatwg-url-searchparams-parse.jsn=1000000 method='legacy' searchParam='manypairs' 0.71 % ±1.74% ±2.32% ±3.04%
url/legacy-vs-whatwg-url-searchparams-parse.jsn=1000000 method='legacy' searchParam='multicharsep' 1.05 % ±1.72% ±2.29% ±2.98%
url/legacy-vs-whatwg-url-searchparams-parse.jsn=1000000 method='legacy' searchParam='multivalue' 2.64 % ±3.07% ±4.12% ±5.44%
url/legacy-vs-whatwg-url-searchparams-parse.jsn=1000000 method='legacy' searchParam='multivaluemany' 0.74 % ±1.97% ±2.62% ±3.41%
url/legacy-vs-whatwg-url-searchparams-parse.jsn=1000000 method='legacy' searchParam='noencode' 2.99 % ±3.20% ±4.28% ±5.62%
url/legacy-vs-whatwg-url-searchparams-parse.jsn=1000000 method='whatwg' searchParam='altspaces' -2.14 % ±3.21% ±4.31% ±5.68%
url/legacy-vs-whatwg-url-searchparams-parse.jsn=1000000 method='whatwg' searchParam='encodefake' -1.87 % ±6.79% ±9.05% ±11.83%
url/legacy-vs-whatwg-url-searchparams-parse.jsn=1000000 method='whatwg' searchParam='encodelast' -3.09 % ±4.80% ±6.46% ±8.53%
url/legacy-vs-whatwg-url-searchparams-parse.jsn=1000000 method='whatwg' searchParam='encodemany' 2.76 % ±5.05% ±6.73% ±8.77%
url/legacy-vs-whatwg-url-searchparams-parse.jsn=1000000 method='whatwg' searchParam='manyblankpairs' 0.36 % ±3.22% ±4.29% ±5.59%
url/legacy-vs-whatwg-url-searchparams-parse.jsn=1000000 method='whatwg' searchParam='manypairs' -0.81 % ±4.67% ±6.22% ±8.10%
url/legacy-vs-whatwg-url-searchparams-parse.jsn=1000000 method='whatwg' searchParam='multicharsep' -1.08 % ±5.20% ±6.97% ±9.18%
url/legacy-vs-whatwg-url-searchparams-parse.jsn=1000000 method='whatwg' searchParam='multivalue' 1.32 % ±6.02% ±8.01% ±10.44%
url/legacy-vs-whatwg-url-searchparams-parse.jsn=1000000 method='whatwg' searchParam='multivaluemany' 2.82 % ±3.80% ±5.05% ±6.58%
url/legacy-vs-whatwg-url-searchparams-parse.jsn=1000000 method='whatwg' searchParam='noencode' 1.49 % ±7.54% ±10.07% ±13.18%
url/legacy-vs-whatwg-url-searchparams-serialize.jsn=1000000 method='legacy' searchParam='altspaces' 2.10 % ±2.88% ±3.84% ±5.02%
url/legacy-vs-whatwg-url-searchparams-serialize.jsn=1000000 method='legacy' searchParam='encodefake' -0.40 % ±1.48% ±1.97% ±2.56%
url/legacy-vs-whatwg-url-searchparams-serialize.jsn=1000000 method='legacy' searchParam='encodelast' 0.13 % ±1.69% ±2.26% ±2.94%
url/legacy-vs-whatwg-url-searchparams-serialize.jsn=1000000 method='legacy' searchParam='encodemany' 2.60 % ±5.97% ±8.02% ±10.61%
url/legacy-vs-whatwg-url-searchparams-serialize.jsn=1000000 method='legacy' searchParam='manyblankpairs' -0.07 % ±3.62% ±4.82% ±6.27%
url/legacy-vs-whatwg-url-searchparams-serialize.jsn=1000000 method='legacy' searchParam='manypairs' -0.88 % ±1.81% ±2.41% ±3.14%
url/legacy-vs-whatwg-url-searchparams-serialize.jsn=1000000 method='legacy' searchParam='multicharsep' 1.87 % ±2.26% ±3.03% ±3.98%
url/legacy-vs-whatwg-url-searchparams-serialize.jsn=1000000 method='legacy' searchParam='multivalue' -0.62 % ±1.32% ±1.76% ±2.29%
url/legacy-vs-whatwg-url-searchparams-serialize.jsn=1000000 method='legacy' searchParam='multivaluemany' 1.17 % ±2.97% ±3.98% ±5.22%
url/legacy-vs-whatwg-url-searchparams-serialize.jsn=1000000 method='legacy' searchParam='noencode' -1.55 % ±5.88% ±7.90% ±10.43%
url/legacy-vs-whatwg-url-searchparams-serialize.jsn=1000000 method='whatwg' searchParam='altspaces' -1.66 % ±3.46% ±4.64% ±6.12%
url/legacy-vs-whatwg-url-searchparams-serialize.jsn=1000000 method='whatwg' searchParam='encodefake' 2.74 % ±4.79% ±6.43% ±8.50%
url/legacy-vs-whatwg-url-searchparams-serialize.jsn=1000000 method='whatwg' searchParam='encodelast' 1.77 % ±3.44% ±4.63% ±6.12%
url/legacy-vs-whatwg-url-searchparams-serialize.jsn=1000000 method='whatwg' searchParam='encodemany' 0.89 % ±4.39% ±5.85% ±7.63%
url/legacy-vs-whatwg-url-searchparams-serialize.jsn=1000000 method='whatwg' searchParam='manyblankpairs' -3.34 % ±4.39% ±5.85% ±7.62%
url/legacy-vs-whatwg-url-searchparams-serialize.jsn=1000000 method='whatwg' searchParam='manypairs' 1.05 % ±1.83% ±2.45% ±3.23%
url/legacy-vs-whatwg-url-searchparams-serialize.jsn=1000000 method='whatwg' searchParam='multicharsep' 2.40 % ±3.49% ±4.65% ±6.07%
url/legacy-vs-whatwg-url-searchparams-serialize.jsn=1000000 method='whatwg' searchParam='multivalue' 0.55 % ±4.05% ±5.39% ±7.01%
url/legacy-vs-whatwg-url-searchparams-serialize.jsn=1000000 method='whatwg' searchParam='multivaluemany' -0.80 % ±2.27% ±3.04% ±4.01%
url/legacy-vs-whatwg-url-searchparams-serialize.jsn=1000000 method='whatwg' searchParam='noencode' -2.28 % ±3.67% ±4.93% ±6.52%
url/legacy-vs-whatwg-url-serialize.jse=1 method='legacy' type='auth' ** -11.00 % ±7.64% ±10.16% ±13.23%
url/legacy-vs-whatwg-url-serialize.jse=1 method='legacy' type='dot' -1.98 % ±6.37% ±8.47% ±11.04%
url/legacy-vs-whatwg-url-serialize.jse=1 method='legacy' type='file' -4.07 % ±11.78% ±15.75% ±20.67%
url/legacy-vs-whatwg-url-serialize.jse=1 method='legacy' type='idn' -2.46 % ±10.78% ±14.42% ±18.91%
url/legacy-vs-whatwg-url-serialize.jse=1 method='legacy' type='javascript' 4.36 % ±7.47% ±9.94% ±12.94%
url/legacy-vs-whatwg-url-serialize.jse=1 method='legacy' type='long' 3.57 % ±8.37% ±11.14% ±14.50%
url/legacy-vs-whatwg-url-serialize.jse=1 method='legacy' type='percent' -0.05 % ±7.37% ±9.82% ±12.81%
url/legacy-vs-whatwg-url-serialize.jse=1 method='legacy' type='short' -4.11 % ±7.61% ±10.12% ±13.19%
url/legacy-vs-whatwg-url-serialize.jse=1 method='legacy' type='wpt' 3.73 % ±8.01% ±10.66% ±13.87%
url/legacy-vs-whatwg-url-serialize.jse=1 method='legacy' type='ws' 0.96 % ±7.20% ±9.58% ±12.47%
url/legacy-vs-whatwg-url-serialize.jse=1 method='whatwg' type='auth' 1.63 % ±6.64% ±8.84% ±11.52%
url/legacy-vs-whatwg-url-serialize.jse=1 method='whatwg' type='dot' 1.36 % ±6.65% ±8.86% ±11.56%
url/legacy-vs-whatwg-url-serialize.jse=1 method='whatwg' type='file' 1.55 % ±8.24% ±10.97% ±14.28%
url/legacy-vs-whatwg-url-serialize.jse=1 method='whatwg' type='idn' 3.14 % ±8.14% ±10.83% ±14.09%
url/legacy-vs-whatwg-url-serialize.jse=1 method='whatwg' type='javascript' 7.03 % ±7.44% ±9.92% ±12.94%
url/legacy-vs-whatwg-url-serialize.jse=1 method='whatwg' type='long' 1.51 % ±6.52% ±8.68% ±11.29%
url/legacy-vs-whatwg-url-serialize.jse=1 method='whatwg' type='percent' -0.43 % ±7.54% ±10.04% ±13.08%
url/legacy-vs-whatwg-url-serialize.jse=1 method='whatwg' type='short' -2.21 % ±10.71% ±14.30% ±18.74%
url/legacy-vs-whatwg-url-serialize.jse=1 method='whatwg' type='wpt' -5.17 % ±7.53% ±10.02% ±13.04%
url/legacy-vs-whatwg-url-serialize.jse=1 method='whatwg' type='ws' 3.20 % ±6.41% ±8.55% ±11.15%
url/url-format.jsn=25000000 type='file' 1.12 % ±1.98% ±2.65% ±3.48%
url/url-format.jsn=25000000 type='slashes' 1.01 % ±1.44% ±1.93% ±2.55%
url/url-parse.jsn=10000000 type='escaped' 0.67 % ±2.48% ±3.31% ±4.30%
url/url-parse.jsn=10000000 type='normal' -0.33 % ±2.65% ±3.53% ±4.59%
url/url-resolve.jsn=100000 path='down' href='auth' 3.51 % ±5.55% ±7.42% ±9.71%
url/url-resolve.jsn=100000 path='down' href='dot' 3.38 % ±3.96% ±5.27% ±6.86%
url/url-resolve.jsn=100000 path='down' href='file' 0.42 % ±2.42% ±3.22% ±4.19%
url/url-resolve.jsn=100000 path='down' href='idn' -0.59 % ±2.73% ±3.63% ±4.73%
url/url-resolve.jsn=100000 path='down' href='javascript' -0.25 % ±3.56% ±4.77% ±6.29%
url/url-resolve.jsn=100000 path='down' href='long' 0.67 % ±4.16% ±5.54% ±7.21%
url/url-resolve.jsn=100000 path='down' href='noscheme' 0.33 % ±1.47% ±1.96% ±2.56%
url/url-resolve.jsn=100000 path='down' href='percent' 0.56 % ±2.41% ±3.22% ±4.20%
url/url-resolve.jsn=100000 path='down' href='short' -1.25 % ±2.76% ±3.67% ±4.79%
url/url-resolve.jsn=100000 path='down' href='ws' -1.25 % ±2.61% ±3.48% ±4.53%
url/url-resolve.jsn=100000 path='foo/bar' href='auth' 0.55 % ±4.50% ±5.98% ±7.79%
url/url-resolve.jsn=100000 path='foo/bar' href='dot' 0.82 % ±5.14% ±6.85% ±8.92%
url/url-resolve.jsn=100000 path='foo/bar' href='file' 2.33 % ±3.92% ±5.23% ±6.84%
url/url-resolve.jsn=100000 path='foo/bar' href='idn' 4.11 % ±5.70% ±7.66% ±10.12%
url/url-resolve.jsn=100000 path='foo/bar' href='javascript' -0.92 % ±1.57% ±2.11% ±2.77%
url/url-resolve.jsn=100000 path='foo/bar' href='long' * -4.48 % ±4.45% ±5.93% ±7.74%
url/url-resolve.jsn=100000 path='foo/bar' href='noscheme' 2.00 % ±4.06% ±5.42% ±7.08%
url/url-resolve.jsn=100000 path='foo/bar' href='percent' -0.50 % ±6.03% ±8.03% ±10.47%
url/url-resolve.jsn=100000 path='foo/bar' href='short' -0.89 % ±3.82% ±5.10% ±6.67%
url/url-resolve.jsn=100000 path='foo/bar' href='ws' 3.12 % ±5.68% ±7.56% ±9.85%
url/url-resolve.jsn=100000 path='sibling' href='auth' 2.99 % ±6.18% ±8.22% ±10.71%
url/url-resolve.jsn=100000 path='sibling' href='dot' 0.73 % ±4.66% ±6.20% ±8.07%
url/url-resolve.jsn=100000 path='sibling' href='file' 1.73 % ±5.63% ±7.51% ±9.81%
url/url-resolve.jsn=100000 path='sibling' href='idn' -2.15 % ±5.80% ±7.72% ±10.05%
url/url-resolve.jsn=100000 path='sibling' href='javascript' 0.52 % ±2.13% ±2.85% ±3.74%
url/url-resolve.jsn=100000 path='sibling' href='long' -0.87 % ±2.81% ±3.74% ±4.89%
url/url-resolve.jsn=100000 path='sibling' href='noscheme' 2.96 % ±4.10% ±5.49% ±7.22%
url/url-resolve.jsn=100000 path='sibling' href='percent' 3.29 % ±5.61% ±7.53% ±9.93%
url/url-resolve.jsn=100000 path='sibling' href='short' -0.28 % ±4.62% ±6.15% ±8.01%
url/url-resolve.jsn=100000 path='sibling' href='ws' 3.36 % ±5.53% ±7.36% ±9.59%
url/url-resolve.jsn=100000 path='up' href='auth' 3.05 % ±4.29% ±5.73% ±7.52%
url/url-resolve.jsn=100000 path='up' href='dot' 3.09 % ±4.60% ±6.16% ±8.11%
url/url-resolve.jsn=100000 path='up' href='file' * -5.01 % ±4.89% ±6.52% ±8.49%
url/url-resolve.jsn=100000 path='up' href='idn' * -4.81 % ±4.12% ±5.51% ±7.21%
url/url-resolve.jsn=100000 path='up' href='javascript' 3.47 % ±5.99% ±8.03% ±10.57%
url/url-resolve.jsn=100000 path='up' href='long' 1.22 % ±2.24% ±2.99% ±3.89%
url/url-resolve.jsn=100000 path='up' href='noscheme' 1.02 % ±1.76% ±2.34% ±3.05%
url/url-resolve.jsn=100000 path='up' href='percent' ** 7.46 % ±4.85% ±6.48% ±8.51%
url/url-resolve.jsn=100000 path='up' href='short' -0.48 % ±5.63% ±7.52% ±9.84%
url/url-resolve.jsn=100000 path='up' href='ws' 1.45 % ±4.40% ±5.87% ±7.67%
url/url-resolve.jsn=100000 path='withscheme' href='auth' 3.53 % ±5.03% ±6.76% ±8.92%
url/url-resolve.jsn=100000 path='withscheme' href='dot' 1.25 % ±6.38% ±8.48% ±11.04%
url/url-resolve.jsn=100000 path='withscheme' href='file' 1.05 % ±1.72% ±2.29% ±2.98%
url/url-resolve.jsn=100000 path='withscheme' href='idn' -0.86 % ±5.90% ±7.92% ±10.45%
url/url-resolve.jsn=100000 path='withscheme' href='javascript' 0.58 % ±2.66% ±3.57% ±4.70%
url/url-resolve.jsn=100000 path='withscheme' href='long' 0.57 % ±2.89% ±3.86% ±5.06%
url/url-resolve.jsn=100000 path='withscheme' href='noscheme' -1.62 % ±3.32% ±4.45% ±5.86%
url/url-resolve.jsn=100000 path='withscheme' href='percent' 1.46 % ±6.53% ±8.70% ±11.35%
url/url-resolve.jsn=100000 path='withscheme' href='short' 0.66 % ±1.92% ±2.56% ±3.33%
url/url-resolve.jsn=100000 path='withscheme' href='ws' -3.03 % ±4.76% ±6.39% ±8.44%
url/url-searchparams-iteration.jsn=1000000 loopMethod='forEach' -2.24 % ±2.53% ±3.38% ±4.40%
url/url-searchparams-iteration.jsn=1000000 loopMethod='iterator' 0.00 % ±2.79% ±3.73% ±4.87%
url/url-searchparams-read.jsn=20000000 param='nonexistent' accessMethod='get' 3.71 % ±5.08% ±6.77% ±8.83%
url/url-searchparams-read.jsn=20000000 param='nonexistent' accessMethod='getAll' 0.99 % ±2.97% ±3.95% ±5.16%
url/url-searchparams-read.jsn=20000000 param='nonexistent' accessMethod='has' 2.43 % ±5.15% ±6.87% ±8.98%
url/url-searchparams-read.jsn=20000000 param='one' accessMethod='get' 0.36 % ±2.94% ±3.93% ±5.15%
url/url-searchparams-read.jsn=20000000 param='one' accessMethod='getAll' -1.45 % ±1.61% ±2.15% ±2.82%
url/url-searchparams-read.jsn=20000000 param='one' accessMethod='has' 1.12 % ±5.89% ±7.86% ±10.28%
url/url-searchparams-read.jsn=20000000 param='three' accessMethod='get' -1.60 % ±6.77% ±9.04% ±11.82%
url/url-searchparams-read.jsn=20000000 param='three' accessMethod='getAll' -1.10 % ±3.72% ±5.01% ±6.65%
url/url-searchparams-read.jsn=20000000 param='three' accessMethod='has' 2.91 % ±4.88% ±6.50% ±8.47%
url/url-searchparams-read.jsn=20000000 param='two' accessMethod='get' 0.76 % ±3.74% ±5.02% ±6.62%
url/url-searchparams-read.jsn=20000000 param='two' accessMethod='getAll' -1.57 % ±3.92% ±5.22% ±6.80%
url/url-searchparams-read.jsn=20000000 param='two' accessMethod='has' 0.87 % ±4.52% ±6.01% ±7.84%
url/url-searchparams-sort.jsn=1000000 type='almostsorted' 0.84 % ±2.68% ±3.61% ±4.76%
url/url-searchparams-sort.jsn=1000000 type='empty' -2.23 % ±5.14% ±6.85% ±8.92%
url/url-searchparams-sort.jsn=1000000 type='long' 0.45 % ±1.52% ±2.02% ±2.65%
url/url-searchparams-sort.jsn=1000000 type='random' -1.05 % ±2.13% ±2.86% ±3.77%
url/url-searchparams-sort.jsn=1000000 type='reversed' 0.48 % ±1.64% ±2.18% ±2.86%
url/url-searchparams-sort.jsn=1000000 type='short' -2.53 % ±5.89% ±7.86% ±10.25%
url/url-searchparams-sort.jsn=1000000 type='sorted' * 1.00 % ±0.91% ±1.21% ±1.58%
url/url-searchparams-sort.jsn=1000000 type='wpt' 3.85 % ±6.07% ±8.09% ±10.54%
url/usvstring.jsn=50000000 input='allinvalid' -1.33 % ±1.97% ±2.63% ±3.43%
url/usvstring.jsn=50000000 input='nonstring' -0.64 % ±2.40% ±3.24% ±4.29%
url/usvstring.jsn=50000000 input='someinvalid' 0.06 % ±1.75% ±2.34% ±3.05%
url/usvstring.jsn=50000000 input='valid' * -2.23 % ±1.81% ±2.41% ±3.17%
url/usvstring.jsn=50000000 input='validsurr' -1.75 % ±2.11% ±2.83% ±3.72%
url/whatwg-url-idna.jsn=5000000 to='ascii' domain='all' 0.81 % ±2.25% ±3.00% ±3.90%
url/whatwg-url-idna.jsn=5000000 to='ascii' domain='empty' -3.75 % ±7.50% ±10.00% ±13.05%
url/whatwg-url-idna.jsn=5000000 to='ascii' domain='none' 0.59 % ±2.36% ±3.14% ±4.09%
url/whatwg-url-idna.jsn=5000000 to='ascii' domain='nonstring' 0.76 % ±5.75% ±7.66% ±9.98%
url/whatwg-url-idna.jsn=5000000 to='ascii' domain='some' 2.40 % ±2.70% ±3.60% ±4.71%
url/whatwg-url-idna.jsn=5000000 to='unicode' domain='all' 1.16 % ±2.78% ±3.70% ±4.82%
url/whatwg-url-idna.jsn=5000000 to='unicode' domain='empty' -5.10 % ±6.13% ±8.24% ±10.90%
url/whatwg-url-idna.jsn=5000000 to='unicode' domain='none' -1.13 % ±1.79% ±2.39% ±3.13%
url/whatwg-url-idna.jsn=5000000 to='unicode' domain='nonstring' -0.54 % ±5.49% ±7.30% ±9.50%
url/whatwg-url-idna.jsn=5000000 to='unicode' domain='some' -0.57 % ±1.95% ±2.60% ±3.39%
url/whatwg-url-properties.jsprop='hash' e=1 type='wpt' withBase='false' 1.69 % ±6.20% ±8.25% ±10.75%
url/whatwg-url-properties.jsprop='hash' e=1 type='wpt' withBase='true' 0.69 % ±8.66% ±11.52% ±15.00%
url/whatwg-url-properties.jsprop='host' e=1 type='wpt' withBase='false' * -7.14 % ±6.03% ±8.04% ±10.49%
url/whatwg-url-properties.jsprop='host' e=1 type='wpt' withBase='true' 0.59 % ±6.37% ±8.49% ±11.07%
url/whatwg-url-properties.jsprop='hostname' e=1 type='wpt' withBase='false' -2.23 % ±7.22% ±9.61% ±12.51%
url/whatwg-url-properties.jsprop='hostname' e=1 type='wpt' withBase='true' 2.86 % ±6.10% ±8.12% ±10.57%
url/whatwg-url-properties.jsprop='href' e=1 type='wpt' withBase='false' -6.24 % ±9.16% ±12.21% ±15.91%
url/whatwg-url-properties.jsprop='href' e=1 type='wpt' withBase='true' -0.18 % ±6.09% ±8.10% ±10.55%
url/whatwg-url-properties.jsprop='origin' e=1 type='wpt' withBase='false' 2.46 % ±6.85% ±9.11% ±11.87%
url/whatwg-url-properties.jsprop='origin' e=1 type='wpt' withBase='true' -2.84 % ±5.56% ±7.41% ±9.69%
url/whatwg-url-properties.jsprop='password' e=1 type='wpt' withBase='false' 1.39 % ±7.68% ±10.22% ±13.31%
url/whatwg-url-properties.jsprop='password' e=1 type='wpt' withBase='true' * -5.80 % ±4.63% ±6.18% ±8.08%
url/whatwg-url-properties.jsprop='pathname' e=1 type='wpt' withBase='false' * -7.58 % ±6.62% ±8.84% ±11.58%
url/whatwg-url-properties.jsprop='pathname' e=1 type='wpt' withBase='true' 5.28 % ±6.32% ±8.44% ±11.04%
url/whatwg-url-properties.jsprop='port' e=1 type='wpt' withBase='false' -5.92 % ±6.07% ±8.10% ±10.58%
url/whatwg-url-properties.jsprop='port' e=1 type='wpt' withBase='true' -0.65 % ±5.65% ±7.53% ±9.81%
url/whatwg-url-properties.jsprop='protocol' e=1 type='wpt' withBase='false' 1.70 % ±7.18% ±9.56% ±12.45%
url/whatwg-url-properties.jsprop='protocol' e=1 type='wpt' withBase='true' -1.79 % ±5.23% ±6.96% ±9.07%
url/whatwg-url-properties.jsprop='search' e=1 type='wpt' withBase='false' -1.70 % ±6.83% ±9.08% ±11.82%
url/whatwg-url-properties.jsprop='search' e=1 type='wpt' withBase='true' -2.17 % ±5.46% ±7.27% ±9.49%
url/whatwg-url-properties.jsprop='searchParams' e=1 type='wpt' withBase='false' 1.00 % ±6.40% ±8.52% ±11.09%
url/whatwg-url-properties.jsprop='searchParams' e=1 type='wpt' withBase='true' -0.75 % ±5.99% ±7.98% ±10.39%
url/whatwg-url-properties.jsprop='username' e=1 type='wpt' withBase='false' -2.09 % ±5.27% ±7.02% ±9.15%
url/whatwg-url-properties.jsprop='username' e=1 type='wpt' withBase='true' * -6.39 % ±5.68% ±7.56% ±9.86%
Be aware that when doing many comparisons the risk of a false-positive
result increases. In this case, there are 235 comparisons, you can thus
expect the following amount of false-positive results:
11.75 false positives, when considering a 5% risk acceptance (*, **, ***),
2.35 false positives, when considering a 1% risk acceptance (**, ***),
0.24 false positives, when considering a 0.1% risk acceptance (***)

@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@aduh95aduh95 added the author ready PRs that have at least one approval, no pending requests for changes, and a CI started. label Feb 9, 2021
@ExE-Boss

Copy link
Copy Markdown
ContributorAuthor

There are some major perf improvements

I’m guessing that’s because V8 is able to better optimise classes when the methods are defined in the class declaration, rather than using Object.defineProperties.

@RaisinTen

Copy link
Copy Markdown
Member

cc @nodejs/url

@aduh95

Copy link
Copy Markdown
Contributor

I’m guessing that’s because V8 is able to better optimise classes when the methods are defined in the class declaration, rather than using Object.defineProperties.

OK but do you understand how does this affect the legacy API?

PR-URL: nodejs#36799
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Tiancheng "Timothy" Gu <timothygu99@gmail.com>
This fixes getter and setter names for the WHATWG URL classes, and fixes
a few other inconsistencies with browsers implementations.
Co-authored-by: Gerhard Stöbich <deb2001-github@yahoo.de>
PR-URL: nodejs#36799
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Tiancheng "Timothy" Gu <timothygu99@gmail.com>
@aduh95
aduh95force-pushed the lib/url/fix-method-accessor-definitions branch from 609a6eb to 0dfc0f5CompareFebruary 13, 2021 17:05
@aduh95

Copy link
Copy Markdown
Contributor

Landed in 7d5806e...0dfc0f5

@aduh95
aduh95 merged commit 0dfc0f5 into nodejs:masterFeb 13, 2021
@ExE-Boss
ExE-Boss deleted the lib/url/fix-method-accessor-definitions branch February 13, 2021 22:23
danielleadams pushed a commit that referenced this pull request Feb 16, 2021
PR-URL: #36799
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Tiancheng "Timothy" Gu <timothygu99@gmail.com>
danielleadams pushed a commit that referenced this pull request Feb 16, 2021
This fixes getter and setter names for the WHATWG URL classes, and fixes
a few other inconsistencies with browsers implementations.
Co-authored-by: Gerhard Stöbich <deb2001-github@yahoo.de>
PR-URL: #36799
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Tiancheng "Timothy" Gu <timothygu99@gmail.com>
This was referenced Feb 16, 2021
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

author readyPRs that have at least one approval, no pending requests for changes, and a CI started.review wantedPRs that need reviews.whatwg-urlIssues and PRs related to the WHATWG URL implementation.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants

@ExE-Boss@aduh95@nodejs-github-bot@RaisinTen@TimothyGu@Flarna@targos@PoojaDurgad