Javascript:什么查找更快:数组.indexOf vs对象哈希值



我必须执行LOT查找,同时解析xmlStream,如果我需要一些标签或不。

我可以用数组来做。indexOf方法(我在数组中有大约15个项目)或使用对象[键]查找。

第二个解决方案在理论上对我来说似乎更有效,但在我的代码中看起来不太好。但如果真的更有效率的话,我就不去管它了。

例如:

var tags = [
    'tag1',
    'tag2',
    'tag3',
    ...
];
var tags2 = {
    'tag1' : null,
    'tag2' : null,
    'tag3' : null,
}
tags.indexOf(value) // exists?
tags2[value] // exists?

Object的键查找速度比Array.indexOf()快。你可以在jsperf上查看。

测试结果:

<标题> 数组

万项索引:26547次/秒
100000项索引:2493次/秒

<标题> 对象

10000项查找键:152,115次操作/秒

性能取决于集合大小和访问模式。一般来说,indexOf是O(n), hash是O(1),但是,由于集合中只有大约15个条目,并且假设每次访问都是完全独立且等概率的,因此hash的优势并不真正存在。

最新更新