2016-12-16 72 views
-3
if(someBoolean && StringUtils.isBlank(someString)){ 
} 

效率的Java

if(StringUtils.isBlank(someString) && someBoolean){ 
} 

哪一个是在效率方面更好的条件语句?不会是比第二种编码方式更快的执行速度吗?如果是的话,它是否显着?

+1

我觉得'1 + 2 = 2 + 1'这是逻辑:) –

+0

取决于您输入中布尔值的频率。可能没关系。 – DejaVuSansMono

+3

考虑到布尔值不需要进一步处理短路,为什么不高效? –

回答

3

&&运算符会短路,这意味着如果左操作数是false,则根本不计算右操作数。我无法想象测试布尔值的情况比致电isBlank更昂贵。另一方面,如果someString是一个非常长的空白字符串(或者有很长的空格前缀),那么这可能比测试布尔值要贵得多。用左边的布尔测试进行测试。

这次输的唯一时间是someBooleantrueisBlank返回false。但是损失很小(测试布尔值的成本),除非这种组合发生绝大部分时间,否则获得的效率将远远超过损失。

0

这取决于其中一个是否失败。当您使用逻辑运算符时,如果其中一个检查失败,则根据指定的运算符,它将缩短评估的时间。但是,假设这些检查总是通过,那么在您发布的代码中不会有任何区别。

无论如何,正如其他人指出的那样,这种差异很小但并非不存在,并且很可能在统计学上并不显着。