这一点:
if (var) {
var = false;
}
与此相比:
var = false;
有速度上的差异吗?
发布于 2018-08-10 05:09:24
在这个问题上,我来晚了,但是我写了这个测试类来回答类似的问题。
package SpeedTests;
import java.text.NumberFormat;
import java.util.Locale;
public class BooleanSpeedTest {
public static void main(String[] args) {
boolean BoolTest = true;
long LongLoop = 100000;
long TrueLoopCount = 0;
long FalseLoopCount = 0;
long TimeTotal = 0;
long startTime;
long endTime;
for(int intLoopA = 1; intLoopA < 6; intLoopA++) {
LongLoop = LongLoop * 10;
TimeTotal = 0;
System.out.println("");
System.out.print(
NumberFormat.getNumberInstance(Locale.US).format(LongLoop) + " - ");
for(int intLoopM = 0; intLoopM < 20; intLoopM++) {
TrueLoopCount = 0;
FalseLoopCount = 0;
startTime = System.currentTimeMillis();
for(long LoopCount = 0; LoopCount < LongLoop; LoopCount++) {
if(!BoolTest) {
TrueLoopCount++;
}
else
FalseLoopCount++;
}
endTime = System.currentTimeMillis();
System.out.print( (endTime - startTime) + "ms ");
TimeTotal += ((endTime - startTime) );
}
System.out.print(" AVG: " + (TimeTotal/20));
}
}
}
我的结果:每个循环的平均时间/十亿(毫秒)注释时间
if(BoolTest) 443 When False 0.00000443
if(BoolTest) 443 When True
if(BoolTest == false) 443 When False
if(BoolTest == false) 442 When True
if(!BoolTest) 438 When False
if(!BoolTest) 441 When True
(BoolTest ? Var++ : Var--) 435 When True
(BoolTest ? Var++ : Var--) 435 When False
https://stackoverflow.com/questions/23228359
复制相似问题