diff options
author | Joyee Cheung <joyeec9h3@gmail.com> | 2018-11-11 16:44:19 +0800 |
---|---|---|
committer | Joyee Cheung <joyeec9h3@gmail.com> | 2018-11-20 05:14:34 +0800 |
commit | a365bb9cb100514efc3f57f7fac03d0679f73ff5 (patch) | |
tree | 447ea47ec5cee90a2c326849328dee21ee6c25d0 /benchmark/url/legacy-vs-whatwg-url-serialize.js | |
parent | 5f25dd1e2eaa73ffb0a51e6d5b5150bcd5d0447e (diff) | |
download | android-node-v8-a365bb9cb100514efc3f57f7fac03d0679f73ff5.tar.gz android-node-v8-a365bb9cb100514efc3f57f7fac03d0679f73ff5.tar.bz2 android-node-v8-a365bb9cb100514efc3f57f7fac03d0679f73ff5.zip |
benchmark: pre-generate data set for URL benchmarks
This patch:
- Introduces `common.bakeUrlData` which can be used to pre-generate
the data set for the URL benchmarks to loop through instead of
looping over a constant.
- Add the option to use WPT data in benchmarks for better diversity
in the input
- Add the option to benchmark URL parsing with base URLs (whatwg only)
- Moves the data in `benchmark/fixtures/url-inputs.js` to
`benchmark/common.js`
PR-URL: https://github.com/nodejs/node/pull/24302
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Diffstat (limited to 'benchmark/url/legacy-vs-whatwg-url-serialize.js')
-rw-r--r-- | benchmark/url/legacy-vs-whatwg-url-serialize.js | 39 |
1 files changed, 19 insertions, 20 deletions
diff --git a/benchmark/url/legacy-vs-whatwg-url-serialize.js b/benchmark/url/legacy-vs-whatwg-url-serialize.js index 017ec4328c..e4c821cb2e 100644 --- a/benchmark/url/legacy-vs-whatwg-url-serialize.js +++ b/benchmark/url/legacy-vs-whatwg-url-serialize.js @@ -3,49 +3,48 @@ const common = require('../common.js'); const url = require('url'); const URL = url.URL; const assert = require('assert'); -const inputs = require('../fixtures/url-inputs.js').urls; const bench = common.createBenchmark(main, { - type: Object.keys(inputs), + type: common.urlDataTypes, method: ['legacy', 'whatwg'], - n: [1e5] + e: [1] }); -function useLegacy(n, input, prop) { - const obj = url.parse(input); +function useLegacy(data) { + const obj = url.parse(data[0]); + const len = data.length; var noDead = url.format(obj); bench.start(); - for (var i = 0; i < n; i += 1) { - noDead = url.format(obj); + for (var i = 0; i < len; i++) { + noDead = data[i].toString(); } - bench.end(n); + bench.end(len); return noDead; } -function useWHATWG(n, input, prop) { - const obj = new URL(input); +function useWHATWG(data) { + const obj = new URL(data[0]); + const len = data.length; var noDead = obj.toString(); bench.start(); - for (var i = 0; i < n; i += 1) { - noDead = obj.toString(); + for (var i = 0; i < len; i++) { + noDead = data[i].toString(); } - bench.end(n); + bench.end(len); return noDead; } -function main({ type, n, method }) { - const input = inputs[type]; - if (!input) { - throw new Error(`Unknown input type "${type}"`); - } +function main({ type, e, method }) { + e = +e; + const data = common.bakeUrlData(type, e, false, false); var noDead; // Avoid dead code elimination. switch (method) { case 'legacy': - noDead = useLegacy(n, input); + noDead = useLegacy(data); break; case 'whatwg': - noDead = useWHATWG(n, input); + noDead = useWHATWG(data); break; default: throw new Error(`Unknown method ${method}`); |