1

所以我正在用 javascript 编写代码,我试图使代码尽可能高效,因为它将通过大量数据运行。我的问题更有效:

1.

foreach MyObjects{
    if(MyObject.getBoolean() == false){
        MyObject.setBoolean(true);
    }
}

2.

foreach MyObjects{
    MyObject.setBoolean(true);
}

我知道我的 foreach 不是真实的,但我想问在运行该语句数千次时哪个更好?

4

2 回答 2

2

我明白为什么你会认为第一个可能没问题,因为有一个“过滤”元素。但是迭代器仍然必须遍历所有值,无论它们是否false存在,因此只需明确告诉它们true使用相同的结果,但函数调用更少。

所以后者。

编辑

正如肯建议的那样,这取决于不同的方法setBooleangetBoolean方法的成本。如果setBoolean不仅仅是将值设置为true,那么第一个可能会更快。但是很难想象他们会做除了他们的方法名称所暗示的之外的任何事情。

于 2013-07-30T16:21:11.030 回答
1

我可能错了,但似乎第二个选项需要更少的步骤:

foreach MyObjects{
    MyObject.setBoolean(true);
}

在第一个选项中,您正在检查每个值的布尔值,然后对于那些为 false 的值,您设置为 true。(保证1次操作(get),第二次(set)的可能性)。在第二种方法中,您还可以找到每个对象,但跳过检查并简单地设置(仅限 1 次操作)。因此,尽管运行时可能没有显着差异,但第二个更有效。

于 2013-07-30T16:24:14.937 回答