请求值或仅自动设置它是否更有效

时间:2013-07-30 16:13:57

标签: javascript coding-style computation-theory

所以我在javascript中编写代码,我试图使代码尽可能高效,因为它将运行数据加载。我的问题更有效:

1

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

2

foreach MyObjects{
    MyObject.setBoolean(true);
}

我知道我的foreach不是真的,但是我在问这个陈述数千次时哪个更好?

2 个答案:

答案 0 :(得分:2)

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

所以后者。

修改

正如Ken所说,这取决于不同setBooleangetBoolean方法的成本。如果setBoolean不只是将值设置为true,那么第一个可能会更快。但是很难想象他们除了他们的方法名称之外还做了什么。

答案 1 :(得分:1)

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

foreach MyObjects{
    MyObject.setBoolean(true);
}

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