• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1'use strict';
2const common = require('../common.js');
3const { domainToASCII, domainToUnicode } = require('url');
4
5const domains = {
6  empty: {
7    ascii: '',
8    unicode: ''
9  },
10  none: {
11    ascii: 'passports',
12    unicode: 'passports'
13  },
14  some: {
15    ascii: 'Paßstraße',
16    unicode: 'xn--Pastrae-1vae'
17  },
18  all: {
19    ascii: '他们不说中文',
20    unicode: 'xn--ihqwczyycu19kkg2c'
21  },
22  nonstring: {
23    ascii: { toString() { return ''; } },
24    unicode: { toString() { return ''; } }
25  }
26};
27
28const bench = common.createBenchmark(main, {
29  domain: Object.keys(domains),
30  to: ['ascii', 'unicode'],
31  n: [5e6]
32});
33
34function main({ n, to, domain }) {
35  const value = domains[domain][to];
36  const method = to === 'ascii' ? domainToASCII : domainToUnicode;
37
38  bench.start();
39  for (let i = 0; i < n; i++) {
40    method(value);
41  }
42  bench.end(n);
43}
44