if(someBoolean && StringUtils.isBlank(someString)){
}
if(StringUtils.isBlank(someString) && someBoolean){
}
哪一个是在效率方面更好的条件语句?不会是比第二种编码方式更快的执行速度吗?如果是的话,它是否显着?
if(someBoolean && StringUtils.isBlank(someString)){
}
if(StringUtils.isBlank(someString) && someBoolean){
}
哪一个是在效率方面更好的条件语句?不会是比第二种编码方式更快的执行速度吗?如果是的话,它是否显着?
&&
运算符会短路,这意味着如果左操作数是false
,则根本不计算右操作数。我无法想象测试布尔值的情况比致电isBlank
更昂贵。另一方面,如果someString
是一个非常长的空白字符串(或者有很长的空格前缀),那么这可能比测试布尔值要贵得多。用左边的布尔测试进行测试。
这次输的唯一时间是someBoolean
是true
和isBlank
返回false
。但是损失很小(测试布尔值的成本),除非这种组合发生绝大部分时间,否则获得的效率将远远超过损失。
这取决于其中一个是否失败。当您使用逻辑运算符时,如果其中一个检查失败,则根据指定的运算符,它将缩短评估的时间。但是,假设这些检查总是通过,那么在您发布的代码中不会有任何区别。
无论如何,正如其他人指出的那样,这种差异很小但并非不存在,并且很可能在统计学上并不显着。
我觉得'1 + 2 = 2 + 1'这是逻辑:) –
取决于您输入中布尔值的频率。可能没关系。 – DejaVuSansMono
考虑到布尔值不需要进一步处理短路,为什么不高效? –