我对布尔优化感到好奇,所以我做了一个小程序来测试这些等价表达式:
(A && B) || (!A && !B)
!(A ^ B)
以下是Ideone上的程序:https://ideone.com/cr3guM
我希望较短的表达式稍快一点,但根据我的测试,无论哪一个首先运行总是最快的。即使我背靠背运行它们,或者在测试之间交替运行,第一个总是最快的,同样方法的未来执行也是如此。
示例:
timeLongForm(); // 879ms
timeShortForm(); // 1316ms
timeLongForm(); // 876ms
交换订单:
timeShortForm(); // 917ms
timeLongForm(); // 1375ms
timeShortForm(); // 915ms
造成这种情况的原因是什么?