哪个更快?按 ID 选择,或按索引选择
Which is Faster? Select by ID, or Select by Index?
Backbone 提供了按 ID(分配给每个模型的唯一标识符属性(和索引从集合中选择模型的选项。 以下哪项是从集合中访问项目的最快方法?
打开 Backbone.js,我可以看到collection.get(id)
(按 ID 选择函数(使用简单的对象文字查找,collection.at(index)
(按索引选择函数(使用简单的数组查找。
来自骨干.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 的模型(。
根据
这个JSPerf,按索引选择(使用collection.at(index)
(通常比按ID选择(使用collection.get(id)
(快,但浏览器的差异很大。 在Chrome和我测试的至少一个Firefox版本上,差异可以忽略不计,但仍然系统地支持按索引选择;但是,在 IE11 中,按索引选择的速度始终(并且几乎完全(快两倍。
这里的故事的寓意是尽可能使用按索引选择;散列对象检索快速方便,但缺乏索引查找的原始效率。
要从哈希访问对象,Javascript 引擎必须经过额外的查找步骤,此外,对象的整体复杂性使它们对于任何考虑性能的脚本来说都不太理想。
相关文章:
- 按照选项卡索引的顺序循环一个jQuery选择
- 基于类似索引的queryString的Id选择器
- 哪个更快?按 ID 选择,或按索引选择
- D3选择html——传递函数时,索引从1开始,而不是从0开始
- 在 javaScript 上选择索引更改
- 当下拉列表选择索引相同时,不会触发 __doPostBack()
- 为什么选择索引在此代码中不起作用
- 从列表菜单中获取选择索引并将其放入函数中
- hot以获取所选文本,并在select中选择索引
- 设置选择索引
- MySQL,根据MIN时间戳选择索引
- 单选按钮选择索引更改,当添加icheck.js脚本引用时不触发
- 检查HTML行文本框是否为空,并且除最后一行外,选择索引是否为零
- 在AngularJS中如何根据另一个Select的选择索引来改变一个Select标签的内容
- 当检查是否选择了多个选择索引时,出现SCRIPT ERROR 70
- 下拉框选择索引属性
- HTML JavaScript下拉列表已选择索引
- 在Ember上使用javascript动态更改选择索引值
- 选择索引已更改,未将参数传递到 Web 部件连接
- facebook选项列表选择索引不工作