因此,我将ID设置为int32,其值从0到20000,我需要将它们放在JavaScript数组中。因此,阵列可能长达20,000个项目。
然后,我需要检查一些ID,以查看它们是否在该列表中。
最有效的方法是什么,这样我们就不会崩溃浏览器的内存?
如果要减少内存,请将数字存储在16位无符号整数的类型化数组中,这将允许您存储0到65535(包括在内)之间的数字。
但是,搜索将很慢。20000个数字不会浪费过多的内存。
20000 * 64 bit = 1280000 bit = 160000 byte = 156.25 kibibyte
所以我建议一个Set或一个对象。设置操作平均要求是亚线性的。
var s = new Set();
s.add(id); // store id
s.has(id); // check id
s.delete(id); // remove id
s.size; // count ids
for(var id of s) {} // iterate ids, in insertion order
var s = Object.create(null);
s[id] = true; // store id
id in s; // check id
delete s[id]; // remove id
for(var id in s) {} // iterate stringified ids, in implementation-defined order
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句