gpt4 book ai didi

javascript - 哪个更快?按ID选择,还是按索引选择?

转载 作者:行者123 更新时间:2023-12-03 10:26:04 27 4
gpt4 key购买 nike

Backbone 提供了通过 ID(分配给每个模型的唯一标识符属性)和索引从集合中选择模型的选项。 以下哪一项是访问集合中的项目的最快方法?

打开 Backbone.js,我可以看到 collection.get(id) (按 ID 选择函数)使用简单的对象字面量查找和 集合。 at(index)(按索引选择函数)使用简单的数组查找。

来自 Backbone.js:

collection.get(id):

// Get a model from the set by id.
get: function(obj) {
if (obj == null) return void 0;
return this._byId[obj] || this._byId[obj.id] || this._byId[obj.cid];
}

collection.at(索引):

// Get the model at the given index.
at: function(index) {
return this.models[index];
}

因此,这个问题的答案应该直接与哪个更快 - 数组访问或对象文字访问(在本例中假设在第一次迭代中使用 .get ,其中它发送的是 ID,而不是带有 ID 或 CID 的模型)。

最佳答案

根据this JSPerf ,按索引选择(使用 collection.at(index))通常比按 ID 选择(使用 collection.get(id))快但是快多少不同浏览器的差异很大。在 Chrome 和至少我测试过的 Firefox 版本之一上,差异可以忽略不计,但仍然系统地支持按索引选择;然而,在 IE11 中,按索引选择始终(并且几乎完全)两倍快。

这里的故事的寓意是尽可能使用按索引选择;哈希对象检索快速且方便,但缺乏索引查找的原始效率。

要从哈希访问对象,Javascript 引擎必须执行额外的查找步骤,即 in addition the overall complexity of objects对于任何需要考虑性能的脚本来说,它们都不是理想的选择。

关于javascript - 哪个更快?按ID选择,还是按索引选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29396788/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com