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