javascript中的数字63385是否有意义?

时间:2018-03-18 01:19:20

标签: javascript node.js performance benchmarking

我在尝试对Arrays vs Sets性能进行基准测试时迭代大型数组和集合。

我最终发现,如果集合的长度恰好是63385或更高,则集合似乎更快。

阵列似乎在任何长度以下都会更快。

以下是我看到的内容:

长度63385及以上

map#Array->big x 119 ops/sec ±1.62% (76 runs sampled)
map#Set->big x 349 ops/sec ±4.11% (81 runs sampled)

长度63384及以下

map#Array->medium x 2,407 ops/sec ±0.48% (94 runs sampled)
map#Set->medium x 818 ops/sec ±0.83% (90 runs sampled)

这是我的基准代码(我知道它可能是我看到的古怪的来源)。

const Benchmark = require('benchmark');

const suite = new Benchmark.Suite;

const array = [];
let mappedArray = [];

const set = new Set();
const mappedSet = new Set();

const mediumArray = [];
let mediumMappedArray = [];
const mediumSet = new Set();
const mediumMappedSet = new Set();

const max = 63385;

for (let i = 0; i < max; i++) {
  array.push(i);
  set.add(i);

  if (i < 63385) {
    smallArray.push(i);
    smallSet.add(i);
  }
}

suite.add('map#Array->big', () => {
  mappedArray = array.map((val, index) => val * 2);
});

suite.add('map#Set->big', () => {
  set.forEach((val) => mappedSet.add(val * 2));
});

suite.add('map#Array->medium', () => {
  mediumMappedArray = mediumArray.map((val, index) => val * 2);
});

suite.add('map#Set->medium', () => {
  mediumSet.forEach((val) => mediumMappedSet.add(val * 2));
});

suite.run();

突然改变的原因是什么?

0 个答案:

没有答案