LokiJS与标准Javascript对象访问

LokiJS与标准Javascript对象访问,javascript,arrays,performance,javascript-objects,lokijs,Javascript,Arrays,Performance,Javascript Objects,Lokijs,LokiJS与标准的javascript对象键访问相比如何 var obj = {}; for (var i = 0; i < 10000; i++) { obj[i] = { name: 'name', description: 'desc', misc: 'misc' }; lokicollection.insert({ id: i, name: 'name', description: 'desc', misc: 'misc' }); } 使用LokiJS枚举对象

LokiJS与标准的javascript对象键访问相比如何

var obj = {};

for (var i = 0; i < 10000; i++) {
    obj[i] = { name: 'name', description: 'desc', misc: 'misc' };
    lokicollection.insert({ id: i, name: 'name', description: 'desc', misc: 'misc' });
}
使用LokiJS枚举对象会有任何性能优势吗

alert(obj[id].name);
alert(lokicollection.by('id', id).name);
var item, arr = lokicollection.where(function(obj) { return true });
for (var i = 0; i < arr.length; i++) {
    item = arr[i];
}

var item, keys = Object.keys(obj);
for (var i = 0; i < keys.length; i++) {
    item = obj[keys[i]];
}
var项,arr=lokicollection.where(函数(obj){return true});
对于(变量i=0;i
除了关于开发工具和临时基准测试的非常有效的评论外,最重要的是JS中数据结构的性能不容易概括。稀疏数组的性能不如密集数组,混合类型数组的性能不如单一类型数组,因为底层引擎往往会根据数组中包含的数据进行智能优化。LokiJS速度很快,经过优化,可以使用更丑陋但速度更快的迭代(例如,对于循环而不是forEach),并保持数组密度,但最终,LokiJS在后台做的事情要多得多:索引、计算视图、发出事件等。这些操作会带来性能成本,这是简单的数组插入操作所没有的成本。像LokiJS这样的解决方案的用处在于快速检索过滤/排序的数据,以及视图的后台重新计算(以及将数据持久化到磁盘/localstorage/indexeddb的能力)。因此,除非您需要持久性并需要管理大量数据,否则我认为您不会真正从LokiJS获得性能。这是写LokiJS的人写的;)

拿着它测量。如果您不能可靠地测量它,那么这无关紧要。您可以使用浏览器的开发人员工具或本地分析工具来比较性能。这是为你感兴趣的环境找到可靠答案的唯一方法。哇!你会考虑10000个项目(每10个字段)一个“负载”的数据吗?顺便说一句,干得好@哥们儿2是的,看起来有很多数据!谢谢所以我在想,当要枚举整个集合时,可能会有一些减速,特别是item=arr[I];行,因为每次迭代都必须查找对象属性。关于如何提高Loki的性能有什么想法吗?