1'use strict';
2const common = require('../common.js');
3const url = require('url');
4const URL = url.URL;
5const assert = require('assert');
6
7const bench = common.createBenchmark(main, {
8  withBase: ['true', 'false'],
9  type: common.urlDataTypes,
10  e: [1],
11});
12
13function useWHATWGWithBase(data) {
14  const len = data.length;
15  let result = new URL(data[0][0], data[0][1]);  // Avoid dead code elimination
16  bench.start();
17  for (let i = 0; i < len; ++i) {
18    const item = data[i];
19    result = new URL(item[0], item[1]);
20  }
21  bench.end(len);
22  return result;
23}
24
25function useWHATWGWithoutBase(data) {
26  const len = data.length;
27  let result = new URL(data[0]);  // Avoid dead code elimination
28  bench.start();
29  for (let i = 0; i < len; ++i) {
30    result = new URL(data[i]);
31  }
32  bench.end(len);
33  return result;
34}
35
36function main({ e, type, withBase }) {
37  withBase = withBase === 'true';
38  const data = common.bakeUrlData(type, e, withBase, false);
39  const noDead = withBase ? useWHATWGWithBase(data) : useWHATWGWithoutBase(data);
40
41  assert.ok(noDead);
42}
43