【问题标题】:Javascript performance and comparing objects vs properties of the objectJavascript 性能和比较对象与对象的属性
【发布时间】:2018-12-07 20:31:28
【问题描述】:

在 javascript 中,通过属性或具有大量属性的整个对象进行比较是否更快?下面是我目前拥有的,但我的对象有很多属性,而且对象列表非常大。从id 中的单个属性创建列表并比较对象的id 是否更好? objectids.indexOf(object1.id)。我会看到性能提升吗?

与对象比较

objects.indexOf(object1);

function Object() {
  this.id = 1;
  this.name = "test";
}

【问题讨论】:

  • 您打算如何比较整个对象?在任何情况下,比较唯一标识符都是可行的方法。
  • 比较数字比比较对象要快。
  • indexOf 将比较对象引用,因此您需要展示如何填充 objects 以了解它是否可以工作...
  • jsperf.com 进行测试并找出答案
  • jsfiddle.net/qx6wgem0/5 - 诚然,这可能并不完全正确,但是从对 20000 个简单对象的数据集运行 10000 次测试来看,看起来通过对象引用执行 indexOf 大约是两倍快如按 ID 执行 indexOf

标签: javascript arrays performance


【解决方案1】:

请注意,两个版本并不相同:

  ({ id: 1}) === ({ id: 1 }) // false      
  ({ id: 1}).id === ({ id: 1 }).id // true

如果两种情况的工作方式相同,indexOf 必须平均遍历数组的一半才能获得索引,那么该数组是 id 数组还是对象数组并不重要。要获得O(1) 查找时间,请改用Set

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-04
    • 1970-01-01
    • 2016-10-25
    • 1970-01-01
    • 1970-01-01
    • 2010-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多