Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nodejs/node.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTimothy Gu <timothygu99@gmail.com>2017-01-29 01:00:52 +0300
committerItalo A. Casas <me@italoacasas.com>2017-02-22 05:14:24 +0300
commit7e37628c512455b62735eb5c6a968443b7d76a18 (patch)
treee6fee6f9390753cd27fbcc9432fe99702f1676dc /benchmark
parentc25c16cc1b82b952d744347dd0d02d1d479971bb (diff)
benchmark: add url/url-searchparams-sort.js
Backport-of: https://github.com/nodejs/node/pull/11098
Diffstat (limited to 'benchmark')
-rw-r--r--benchmark/url/url-searchparams-sort.js48
1 files changed, 48 insertions, 0 deletions
diff --git a/benchmark/url/url-searchparams-sort.js b/benchmark/url/url-searchparams-sort.js
new file mode 100644
index 00000000000..677ce511cf3
--- /dev/null
+++ b/benchmark/url/url-searchparams-sort.js
@@ -0,0 +1,48 @@
+'use strict';
+const common = require('../common.js');
+const URLSearchParams = require('url').URLSearchParams;
+
+const inputs = {
+ empty: '',
+ sorted: 'a&b&c&d&e&f&g&h&i&j&k&l&m&n&o&p&q&r&s&t&u&v&w&x&y&z',
+ almostsorted: 'a&b&c&d&e&f&g&i&h&j&k&l&m&n&o&p&q&r&s&t&u&w&v&x&y&z',
+ reversed: 'z&y&x&w&v&u&t&s&r&q&p&o&n&m&l&k&j&i&h&g&f&e&d&c&b&a',
+ random: 'm&t&d&c&z&v&a&n&p&y&u&o&h&l&f&j&e&q&b&i&s&x&k&w&r&g',
+ // 8 parameters
+ short: 'm&t&d&c&z&v&a&n',
+ // 88 parameters
+ long: 'g&r&t&h&s&r&d&w&b&n&h&k&x&m&k&h&o&e&x&c&c&g&e&b&p&p&s&n&j&b&y&z&' +
+ 'u&l&o&r&w&a&u&l&m&f&j&q&p&f&e&y&e&n&e&l&m&w&u&w&t&n&t&q&v&y&c&o&' +
+ 'k&f&j&i&l&m&g&j&d&i&z&q&p&x&q&q&d&n&y&w&g&i&v&r'
+};
+
+function getParams(str) {
+ const out = [];
+ for (const key of str.split('&')) {
+ out.push(key, '');
+ }
+ return out;
+}
+
+const bench = common.createBenchmark(main, {
+ type: Object.keys(inputs),
+ n: [1e6]
+}, {
+ flags: ['--expose-internals']
+});
+
+function main(conf) {
+ const searchParams = require('internal/url').searchParamsSymbol;
+ const input = inputs[conf.type];
+ const n = conf.n | 0;
+ const params = new URLSearchParams();
+ const array = getParams(input);
+
+ var i;
+ bench.start();
+ for (i = 0; i < n; i++) {
+ params[searchParams] = array.slice();
+ params.sort();
+ }
+ bench.end(n);
+}