1'use strict'; 2const common = require('../common.js'); 3const querystring = require('querystring'); 4const searchParams = common.searchParams; 5 6const bench = common.createBenchmark(main, { 7 searchParam: Object.keys(searchParams), 8 method: ['legacy', 'whatwg'], 9 n: [1e6], 10}); 11 12function useLegacy(n, input) { 13 querystring.parse(input); 14 bench.start(); 15 for (let i = 0; i < n; i += 1) { 16 querystring.parse(input); 17 } 18 bench.end(n); 19} 20 21function useWHATWG(n, param) { 22 new URLSearchParams(param); 23 bench.start(); 24 for (let i = 0; i < n; i += 1) { 25 new URLSearchParams(param); 26 } 27 bench.end(n); 28} 29 30function main({ searchParam, n, method }) { 31 const param = searchParams[searchParam]; 32 if (!param) { 33 throw new Error(`Unknown search parameter type "${searchParam}"`); 34 } 35 36 switch (method) { 37 case 'legacy': 38 useLegacy(n, param); 39 break; 40 case 'whatwg': 41 useWHATWG(n, param); 42 break; 43 default: 44 throw new Error(`Unknown method ${method}`); 45 } 46} 47