删除属性或构造仅具有所需属性的新对象会更快吗?

时间:2017-12-27 00:16:33

标签: javascript node.js performance properties

我在NodeJS中有一个循环执行了数百万次,除了许多其他东西之外,还从一些对象中删除了一些不需要的属性。

我很想知道一般来说是否更快:

undesiredPropsArray.forEach(p => delete(obj[p]))

var newObj = {};
Object.keys(obj).forEach(p => { if (!undesiredPropsObj[p]) newObj[p] = obj[p] });

简单地运行测试并不像听起来那么简单,因为所需和不需要的属性的数量会有所不同。

2 个答案:

答案 0 :(得分:1)

如果您暂时假设每个命令执行时间相等,那么执行命令较少的任务将执行得更快。换句话说,如果您希望保留较少的不受欢迎的属性,那么删除应该更快(反之亦然)。虽然,除非我们谈论处理了大量的巨大物体,否则节省的时间将是疏忽的。我想:))

答案 1 :(得分:1)

您可以对jsperf上的javascript代码进行基准测试和比较。我做了,第一次接近的速度比预期的要快(约为66% - 这可能会有所不同)..

编辑: 这是我使用的初始代码:

  var undesiredPropsArray = [];
  var undesiredPropsObj = {};
  var obj = {};

  for (i=0;i<10000;i++) {
    obj[i] = null;
    if ((i%2) === 0) {
        undesiredPropsArray.push(i);
        undesiredPropsObj[i] = null;
    }
  }