我必须执行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的优势并不真正存在。