三元表达式比布尔逻辑更快吗?

时间:2014-01-03 22:21:02

标签: java performance boolean

这看起来并不重复,因为只有一个我的解决方案涉及分支。

基本上,这两行中的哪一行效率更高?将是一个Java应用程序,但很高兴知道一般的答案。

shouldRefresh = useCache ? refetchIfExpired : true;

shouldRefresh = !useCache || refetchIfExpired;

2 个答案:

答案 0 :(得分:5)

JIT编译器将找出最快的操作并使用它。使用最有意义的东西来阅读。不要过早优化。

为了感兴趣:如果在没有优化的情况下编译它,那么布尔运算符会更快。这是一个简单的数学运算,它只需要一个CPU周期(加上!运算符的另一个),而三元表达式需要一个分支,如果分支预测猜错了,它会中断管道。

答案 1 :(得分:1)

我不关心这里的表现,但关于可读性。在这方面,三元运算符在您的示例中获胜。顺便说一句,我期望大致相同的表现。

您还可以了解可读性如何帮助节省维护代码的时间。那更重要的是什么?几乎无法衡量的微优化还是更容易理解?当你认为评论会解决这个问题时,我认为这是一项不必要的写作工作,也会耗费时间。