javascript - LokiJS 与标准 Javascript 对象访问

标签 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 通过键直接访问对象是否会带来性能优势?

alert(obj[id].name);
alert(lokicollection.by('id', id).name);

使用 LokiJS 枚举对象是否会带来性能优势?

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]];
}

最佳答案

除了关于开发工具和临时基准测试的非常有效的评论之外,最重要的是,JS 中数据结构的性能不能轻易概括。稀疏数组的性能不如密集数组,混合类型数组的性能不如单一类型数组,因为底层引擎倾向于根据数组中包含的数据进行智能优化。 LokiJS 速度很快,并且经过优化以使用更丑陋但更快的迭代(例如 for 循环而不是 forEach)并保持数组密集,但最终 LokiJS 在后台做了更多工作:索引、计算 View 、发出事件等。操作会带来性能成本,这是简单数组插入操作所没有的成本。像 LokiJS 这样的解决方案的有用之处在于快速检索过滤/排序的数据,以及 View 的后台重新计算(以及将数据保存到磁盘/本地存储/indexeddb 的能力)。因此,除非您需要持久性并且需要管理大量数据,否则我认为您不会真正从 LokiJS 中获得性能。这是 LokiJS 的作者写的 ;)

关于javascript - LokiJS 与标准 Javascript 对象访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37083710/

相关文章:

Javascript 循环一个数组

php - 找到长 TTFB 的罪魁祸首

performance - 使用 QT 的平滑文本动画(选框文本效果)

android - 从后台启动时初始化phonegap应用程序

python - python中 float 组的最小值

javascript - 我在我的应用程序中使用一个网站的 img url。有些人收到 reCaptcha

javascript - 年轻用户的 Javascript 提示框替代方案

javascript - 如何对 JavaScript 操作进行计时,以便它们按正确的顺序发生

javascript - 如何将按钮innerHTML设置为图像? (使用 DOM)

php - 如何从核心php中的两个变量中提取常用词