| 'use strict'; |
| const common = require('../common.js'); |
| const querystring = require('querystring'); |
| |
| const bench = common.createBenchmark(main, { |
| type: ['noencode', 'encodemany', 'encodelast', 'array'], |
| n: [1e6], |
| }); |
| |
| function main({ type, n }) { |
| const inputs = { |
| noencode: { |
| foo: 'bar', |
| baz: 'quux', |
| xyzzy: 'thud' |
| }, |
| encodemany: { |
| '\u0080\u0083\u0089': 'bar', |
| '\u008C\u008E\u0099': 'quux', |
| 'xyzzy': '\u00A5q\u00A3r' |
| }, |
| encodelast: { |
| foo: 'bar', |
| baz: 'quux', |
| xyzzy: 'thu\u00AC' |
| }, |
| array: { |
| foo: [], |
| baz: ['bar'], |
| xyzzy: ['bar', 'quux', 'thud'] |
| } |
| }; |
| const input = inputs[type]; |
| |
| // Force-optimize querystring.stringify() so that the benchmark doesn't get |
| // disrupted by the optimizer kicking in halfway through. |
| for (const name in inputs) |
| querystring.stringify(inputs[name]); |
| |
| bench.start(); |
| for (var i = 0; i < n; i += 1) |
| querystring.stringify(input); |
| bench.end(n); |
| } |