所以我在javascript中编写代码,我试图使代码尽可能高效,因为它将运行数据加载。我的问题更有效:
1
foreach MyObjects{
if(MyObject.getBoolean() == false){
MyObject.setBoolean(true);
}
}
2
foreach MyObjects{
MyObject.setBoolean(true);
}
我知道我的foreach不是真的,但是我在问这个陈述数千次时哪个更好?
答案 0 :(得分:2)
我明白为什么你会认为第一个可能没问题,因为有一个'过滤'元素。但迭代器仍然必须遍历所有值,无论它们是否为false
,所以只是明确告诉它们true
使用相同的结果,但只需少一个函数调用。
所以后者。
修改强>:
正如Ken所说,这取决于不同setBoolean
和getBoolean
方法的成本。如果setBoolean
不只是将值设置为true
,那么第一个可能会更快。但是很难想象他们除了他们的方法名称之外还做了什么。
答案 1 :(得分:1)
我可能错了,但似乎第二种选择需要更少的步骤:
foreach MyObjects{
MyObject.setBoolean(true);
}
在第一个选项中,您要检查每个值的布尔值,然后对于那些为false的值,您将设置为true。 (1运行保证(get),有可能是second(set))。在第二种方法中,您也可以找到每个对象,但跳过检查并简单地设置(仅1个操作)。因此,尽管运行时可能没有显着差异,但第二个更有效。