为什么这些等效的布尔表达式运行得更快/更慢,具体取决于它们执行的顺序?

时间:2016-04-07 17:49:38

标签: java performance optimization compiler-optimization

我对布尔优化感到好奇,所以我做了一个小程序来测试这些等价表达式:

(A && B) || (!A && !B)

!(A ^ B)

以下是Ideone上的程序:https://ideone.com/cr3guM

我希望较短的表达式稍快一点,但根据我的测试,无论哪一个首先运行总是最快的。即使我背靠背运行它们,或者在测试之间交替运行,第一个总是最快的,同样方法的未来执行也是如此。

示例:

timeLongForm();  // 879ms
timeShortForm(); // 1316ms
timeLongForm();  // 876ms

交换订单:

timeShortForm(); // 917ms
timeLongForm();  // 1375ms
timeShortForm();  // 915ms

造成这种情况的原因是什么?

0 个答案:

没有答案