美文网首页
es6 Set 的遍历、性能

es6 Set 的遍历、性能

作者: zxqian1991 | 来源:发表于2017-06-15 10:58 被阅读973次

Es6推出了SetMap等操作。分别对应于之前常用的ArrayObject.

Set而言,与Array最大的不同在于Set的数据是不能够有重复的。那么他们的性能到底如何呢。可以进行一个比较
Array

let s = []
for(let i = 0; i < 10000 * 1000;i++) {
    s.push(i);
};
let begin = new Date().getTime();
s.push(10000 * 10000 - 1);
let end = new Date().getTime();
console.log(`添加消耗${end-begin}ms`);
begin = new Date().getTime();
s.indexOf(10000 * 10000 - 1);
end = new Date().getTime();
console.log(`判断消耗${end-begin}ms`);

输出结果如下:

image.png

Set

let s = new Set();
let begin = new Date().getTime();
for(let i = 0; i < 10000 * 1000;i++) {
    s.add(i);
};
let end = new Date().getTime();
console.log(`消耗${end-begin}ms`);
begin = new Date().getTime();
s.add(10000 * 10000 - 1);
end = new Date().getTime();
console.log(`添加消耗${end-begin}ms`);
begin = new Date().getTime();
s.has(10000 * 10000 - 1);
end = new Date().getTime();
console.log(`判断消耗${end-begin}ms`);

输出结果如下:


image.png

从上面可以看出

  1. 添加元素的角度看,数组比Set快很多
  2. 获取某个元素的角度看,Set比数组快很多

那么,再添加元素的时候是遍历的?
应该不可能,因为如果是遍历的话,那么has就不可能这么快,因为完全可以通过has的方法去获取存在不存在,那么。之所以慢,应该就是构建Set时,内部处理消耗了时间。而has能够这么快,也是因为内部形成了映射。

相关文章

  • es6 Set 的遍历、性能

    Es6推出了Set、Map等操作。分别对应于之前常用的Array、Object. 就Set而言,与Array最大的...

  • 数组去重有几种方式?

    方法一:遍历比较 方法二:ES6:Set set ES6 提供新的数据结构 Set。它类似于数组,但是成员的值都是...

  • Javascript教程(七)iterable

    数组的遍历可以使用下标,但是Map,Set无法使用下标遍历。ES6标准引入了新的iterable类型,Array、...

  • JavaScript教程day09-iterable

    iterable 遍历Array可以采用下标循环,遍历Map和Set无法使用下标,为了统一集合类型,ES6标准引入...

  • JavaScript iterable(迭代器)

    iterable 遍历Array可以采用下标循环,遍历Map和Set就无法使用下标。为了统一集合类型,ES6标准引...

  • iOS提高数组遍历性能的小技巧

    利用set提高遍历性能 优化前时间复杂度是O(n²) 优化后时间复杂度是O(n) 利用字典提高遍历性能 优化前时间...

  • Swift 5.x Set 访问和修改

    1.遍历 Set 可以使用for-in遍历Set 因为Set是无序的, 如果要顺序遍历Set, 使用sorted(...

  • JS--iterable

    遍历Array可以采用下标循环,遍历Map和Set就无法使用下标。为了统一集合类型,ES6标准引入了新的itera...

  • Javascript之iterable

    遍历Array可以采用下标循环,遍历Map和Set就无法使用下标。为了统一集合类型,ES6标准引入了新的itera...

  • iterable

    遍历Array可以采用下标循环,遍历Map和Set就无法使用下标。为了统一集合类型,ES6标准引入了新的itera...

网友评论

      本文标题:es6 Set 的遍历、性能

      本文链接:https://www.haomeiwen.com/subject/zypyqxtx.html