benchmark: URLSearchParams v.s. querystring#11170
benchmark: URLSearchParams v.s. querystring#11170joyeecheung wants to merge 3 commits intonodejs:masterfrom
Conversation
Benchmark results"filename", "configuration", "rate", "time" "url/legacy-vs-whatwg-url-searchparams-parse.js", "n=100000 method=""legacy"" type=""noencode""", 701665.7988113234, 0.142517991 "url/legacy-vs-whatwg-url-searchparams-parse.js", "n=100000 method=""whatwg"" type=""noencode""", 552666.4181657383, 0.180940974 "url/legacy-vs-whatwg-url-searchparams-parse.js", "n=100000 method=""legacy"" type=""encodemany""", 329444.5913401272, 0.30354118 "url/legacy-vs-whatwg-url-searchparams-parse.js", "n=100000 method=""whatwg"" type=""encodemany""", 303372.93978298944, 0.32962729 "url/legacy-vs-whatwg-url-searchparams-parse.js", "n=100000 method=""legacy"" type=""encodelast""", 588217.7271682303, 0.170005077 "url/legacy-vs-whatwg-url-searchparams-parse.js", "n=100000 method=""whatwg"" type=""encodelast""", 387422.55156841147, 0.258116105 "url/legacy-vs-whatwg-url-searchparams-parse.js", "n=100000 method=""legacy"" type=""multivalue""", 585475.1473030588, 0.170801443 "url/legacy-vs-whatwg-url-searchparams-parse.js", "n=100000 method=""whatwg"" type=""multivalue""", 450455.16196795536, 0.221997678 "url/legacy-vs-whatwg-url-searchparams-parse.js", "n=100000 method=""legacy"" type=""multivaluemany""", 234961.99196077543, 0.42560075 "url/legacy-vs-whatwg-url-searchparams-parse.js", "n=100000 method=""whatwg"" type=""multivaluemany""", 207464.48245403994, 0.482010216 "url/legacy-vs-whatwg-url-searchparams-parse.js", "n=100000 method=""legacy"" type=""manypairs""", 101698.05382854801, 0.983302986 "url/legacy-vs-whatwg-url-searchparams-parse.js", "n=100000 method=""whatwg"" type=""manypairs""", 82709.3160806023, 1.209053644 "url/legacy-vs-whatwg-url-searchparams-serialize.js", "n=100000 method=""legacy"" type=""noencode""", 2087508.0885719662, 0.047904006 "url/legacy-vs-whatwg-url-searchparams-serialize.js", "n=100000 method=""whatwg"" type=""noencode""", 957945.566946433, 0.104390065 "url/legacy-vs-whatwg-url-searchparams-serialize.js", "n=100000 method=""legacy"" type=""encodemany""", 2006553.4839406896, 0.049836698 "url/legacy-vs-whatwg-url-searchparams-serialize.js", "n=100000 method=""whatwg"" type=""encodemany""", 955673.9682324034, 0.104638196 "url/legacy-vs-whatwg-url-searchparams-serialize.js", "n=100000 method=""legacy"" type=""encodelast""", 1871094.8496336725, 0.053444645 "url/legacy-vs-whatwg-url-searchparams-serialize.js", "n=100000 method=""whatwg"" type=""encodelast""", 1046005.1145256879, 0.095601827 "url/legacy-vs-whatwg-url-searchparams-serialize.js", "n=100000 method=""legacy"" type=""multivalue""", 1805964.6316274612, 0.05537207 "url/legacy-vs-whatwg-url-searchparams-serialize.js", "n=100000 method=""whatwg"" type=""multivalue""", 1024147.262216766, 0.097642208 "url/legacy-vs-whatwg-url-searchparams-serialize.js", "n=100000 method=""legacy"" type=""multivaluemany""", 984058.1206768975, 0.101620014 "url/legacy-vs-whatwg-url-searchparams-serialize.js", "n=100000 method=""whatwg"" type=""multivaluemany""", 587170.9155831832, 0.170308163 "url/legacy-vs-whatwg-url-searchparams-serialize.js", "n=100000 method=""legacy"" type=""manypairs""", 327120.6759917366, 0.305697583 "url/legacy-vs-whatwg-url-searchparams-serialize.js", "n=100000 method=""whatwg"" type=""manypairs""", 133856.77722659096, 0.747067142 |
|
After this, it seems url-searchparams-stringifier.js and url-searchparams-parse.js are unneeded and should be removed, since their features can be reproduced with The first commit LGTM. |
There was a problem hiding this comment.
Any reason why you didn't include multicharsep and encodefake in the benchmark?
There was a problem hiding this comment.
URLSearchParams doesn't support custom separators, so multicharsep is not needed.
I copied the input from url-searchparams-* benchmarks, looks like there isn't encodefake in them.
There was a problem hiding this comment.
I see, but I think it's beneficial to have a benchmark case with duplicated & à la #10454, even w/o custom separators.
4e43765 to
56e4d2c
Compare
Add benchmarks to compare the performance between URLSearchParams and querystring, remove duplicate benchmarks.
|
@TimothyGu Thanks for the review, I've deleted url-searchparams-stringifier.js and url-searchparams-parse.js and added |
New benchmark results"filename", "configuration", "rate", "time" "url/legacy-vs-whatwg-url-searchparams-parse.js", "n=100000 method=""legacy"" type=""noencode""", 734274.1892019577, 0.136188908 "url/legacy-vs-whatwg-url-searchparams-parse.js", "n=100000 method=""whatwg"" type=""noencode""", 554793.1557187826, 0.180247357 "url/legacy-vs-whatwg-url-searchparams-parse.js", "n=100000 method=""legacy"" type=""encodemany""", 281883.5375670236, 0.354756439 "url/legacy-vs-whatwg-url-searchparams-parse.js", "n=100000 method=""whatwg"" type=""encodemany""", 262448.4441027436, 0.381027216 "url/legacy-vs-whatwg-url-searchparams-parse.js", "n=100000 method=""legacy"" type=""encodefake""", 643062.0908794767, 0.155505979 "url/legacy-vs-whatwg-url-searchparams-parse.js", "n=100000 method=""whatwg"" type=""encodefake""", 483293.1619251652, 0.206913749 "url/legacy-vs-whatwg-url-searchparams-parse.js", "n=100000 method=""legacy"" type=""encodelast""", 510367.36273391626, 0.195937294 "url/legacy-vs-whatwg-url-searchparams-parse.js", "n=100000 method=""whatwg"" type=""encodelast""", 437500.5772273241, 0.228571127 "url/legacy-vs-whatwg-url-searchparams-parse.js", "n=100000 method=""legacy"" type=""multivalue""", 541015.4234083545, 0.184837614 "url/legacy-vs-whatwg-url-searchparams-parse.js", "n=100000 method=""whatwg"" type=""multivalue""", 437601.50823385746, 0.228518408 "url/legacy-vs-whatwg-url-searchparams-parse.js", "n=100000 method=""legacy"" type=""multivaluemany""", 250108.5908974529, 0.39982633 "url/legacy-vs-whatwg-url-searchparams-parse.js", "n=100000 method=""whatwg"" type=""multivaluemany""", 199566.1097502964, 0.501087084 "url/legacy-vs-whatwg-url-searchparams-parse.js", "n=100000 method=""legacy"" type=""manypairs""", 107447.1215269644, 0.930690358 "url/legacy-vs-whatwg-url-searchparams-parse.js", "n=100000 method=""whatwg"" type=""manypairs""", 85509.30339852828, 1.169463392 "url/legacy-vs-whatwg-url-searchparams-serialize.js", "n=100000 method=""legacy"" type=""noencode""", 2154038.526056058, 0.046424425 "url/legacy-vs-whatwg-url-searchparams-serialize.js", "n=100000 method=""whatwg"" type=""noencode""", 991281.4418117199, 0.100879524 "url/legacy-vs-whatwg-url-searchparams-serialize.js", "n=100000 method=""legacy"" type=""encodemany""", 2134596.604680756, 0.046847259 "url/legacy-vs-whatwg-url-searchparams-serialize.js", "n=100000 method=""whatwg"" type=""encodemany""", 972833.6211299463, 0.1027925 "url/legacy-vs-whatwg-url-searchparams-serialize.js", "n=100000 method=""legacy"" type=""encodefake""", 1205527.6335263504, 0.08295123 "url/legacy-vs-whatwg-url-searchparams-serialize.js", "n=100000 method=""whatwg"" type=""encodefake""", 780084.1703018913, 0.128191295 "url/legacy-vs-whatwg-url-searchparams-serialize.js", "n=100000 method=""legacy"" type=""encodelast""", 1735685.898199488, 0.057614111 "url/legacy-vs-whatwg-url-searchparams-serialize.js", "n=100000 method=""whatwg"" type=""encodelast""", 988627.9119911569, 0.10115029 "url/legacy-vs-whatwg-url-searchparams-serialize.js", "n=100000 method=""legacy"" type=""multivalue""", 2106025.583493342, 0.047482804 "url/legacy-vs-whatwg-url-searchparams-serialize.js", "n=100000 method=""whatwg"" type=""multivalue""", 980357.4022317012, 0.102003616 "url/legacy-vs-whatwg-url-searchparams-serialize.js", "n=100000 method=""legacy"" type=""multivaluemany""", 1081755.7575287307, 0.092442309 "url/legacy-vs-whatwg-url-searchparams-serialize.js", "n=100000 method=""whatwg"" type=""multivaluemany""", 610422.7909113565, 0.163820882 "url/legacy-vs-whatwg-url-searchparams-serialize.js", "n=100000 method=""legacy"" type=""manypairs""", 321331.6538998709, 0.311204946 "url/legacy-vs-whatwg-url-searchparams-serialize.js", "n=100000 method=""whatwg"" type=""manypairs""", 124584.44996870444, 0.802668391 |
|
@TimothyGu Does this LGTY? |
|
@joyeecheung, I still prefer to have a test case with a disproportionately large number of |
|
@TimothyGu New cases added, PTAL. Personally I don't find the performance impact on an edge case like this significant though. |
New numbers
|
|
@TimothyGu I'm planning on unifying the inputs to url-related benchmarks a bit after this. Thanks for the heads up though :) |
PR-URL: #11170 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Timothy Gu <timothygu99@gmail.com>
Add benchmarks to compare the performance between URLSearchParams and querystring, remove duplicate benchmarks. PR-URL: #11170 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Timothy Gu <timothygu99@gmail.com>
PR-URL: nodejs#11170 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Timothy Gu <timothygu99@gmail.com>
Add benchmarks to compare the performance between URLSearchParams and querystring, remove duplicate benchmarks. PR-URL: nodejs#11170 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Timothy Gu <timothygu99@gmail.com>
PR-URL: nodejs#11170 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Timothy Gu <timothygu99@gmail.com>
Add benchmarks to compare the performance between URLSearchParams and querystring, remove duplicate benchmarks. PR-URL: nodejs#11170 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Timothy Gu <timothygu99@gmail.com>
PR-URL: nodejs#11170 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Timothy Gu <timothygu99@gmail.com>
Add benchmarks to compare the performance between URLSearchParams and querystring, remove duplicate benchmarks. PR-URL: nodejs#11170 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Timothy Gu <timothygu99@gmail.com>
This PR is a follow-up of #10678, which compare the performance of
URLSearchParamstoquerystringcounterparts.Also it fixes a mistake in
legacy-vs-whatwg-url-parse.jswhere the first call tonew URLwas written asurl.parse.Refs: #10874 (comment)
Checklist
make -j4 test(UNIX), orvcbuild test(Windows) passesAffected core subsystem(s)
benchmark, url