JavaScript性能:对象中的简单键搜索与数组中的值搜索
我需要在JavaScript中进行模拟——即,能够回答问题“我是否包含x?”的变量 插入/删除的性能并不重要。秩序不重要。事实并非如此 有两种方法可以实现它:JavaScript性能:对象中的简单键搜索与数组中的值搜索,javascript,arrays,performance,object,set,Javascript,Arrays,Performance,Object,Set,我需要在JavaScript中进行模拟——即,能够回答问题“我是否包含x?”的变量 插入/删除的性能并不重要。秩序不重要。事实并非如此 有两种方法可以实现它: 使用带值搜索的正则数组: var set = [17, 22, 34]; if (set.indexOf(x)!=-1) ...; 1a。如有可能,使用(例如): var set = Int32Array.of(17, 22, 34); if (set.indexOf(x)!=-1) ...; 将对象与键搜索一起使用: var
var set = [17, 22, 34];
if (set.indexOf(x)!=-1) ...;
- 1a。如有可能,使用(例如):
var set = Int32Array.of(17, 22, 34); if (set.indexOf(x)!=-1) ...;
var set = {17: true, 22: true, 34: true};
if (set[x]) ...;
我知道我可以自己进行测量,但让每个开发人员测量相同的东西似乎是不合理的——因此我在这里提出了这个问题,以防有人这样做。我对此也很好奇,我使用与NodeJS 6.3上的jsPerm相同的堆栈进行了大部分分析: 输入数据是各种大小的数组(2^x,其中x=0..11)和1到2个字符的短键 测试被插入、查找和插入+查找打破 结果如下:
- 使用Object(基本上是HashMap)进行查找的速度从16个元素增加到1个元素
- 对于对象关键点,插入速度非常慢
- 插入+查找,无论大小,数组总是更快
还必须考虑数据集中的重复项…请检查。@Andreas,此网站的问题是它不发布结果(如果我可以看到其他用户的结果,并提供指定的日期/其他信息,则会更好;编写测试所需的时间可能比在不同的浏览器中运行测试所需的时间要少)。不过,谢谢你,现在我看到,即使是在小型集合上,对象键搜索也会更快,至少在Firefox/Linux/64位上是如此。也许我以后会写我自己的测试,并将它(连同结果)发布在这里作为答案。