翻转 Java 布尔值的最快方法是什么?
What is the quickest way to flip a Java boolean?
哪种方式更快且占用资源更少:
boolean = !boolean
boolean ^= boolean
编辑:这不是一个基于意见的问题。有一个正确的答案。
boolean = !boolean
可能更好,因为它更易于阅读。两者都不是资源密集型,因此使用其中任何一个都不会真正对性能产生真正的影响。
我是用下面的代码测的
public static void main(String[] args)
{
boolean myVariable = true;
long startTime = 0;
long endTime = 0;
long duration1 = 0;
long duration2 = 0;
for(int i=0; i<1000; i++) {
startTime = System.nanoTime();
myVariable = !myVariable;
endTime = System.nanoTime();
duration1 += (endTime - startTime);
startTime = System.nanoTime();
myVariable ^= myVariable;
endTime = System.nanoTime();
duration2 += (endTime - startTime);
}
System.out.println("The duration for the first operation is :" + (duration1/1000));
System.out.println("The duration for second operation is :" + (duration2/1000));
}
结果是(以纳秒为单位)
第一次操作的持续时间是:140
第二个操作的持续时间是:123
根据此分析,布尔值 ^= boolean 比 boolean = !boolean 更快。
哪种方式更快且占用资源更少:
boolean = !boolean
boolean ^= boolean
编辑:这不是一个基于意见的问题。有一个正确的答案。
boolean = !boolean
可能更好,因为它更易于阅读。两者都不是资源密集型,因此使用其中任何一个都不会真正对性能产生真正的影响。
我是用下面的代码测的
public static void main(String[] args)
{
boolean myVariable = true;
long startTime = 0;
long endTime = 0;
long duration1 = 0;
long duration2 = 0;
for(int i=0; i<1000; i++) {
startTime = System.nanoTime();
myVariable = !myVariable;
endTime = System.nanoTime();
duration1 += (endTime - startTime);
startTime = System.nanoTime();
myVariable ^= myVariable;
endTime = System.nanoTime();
duration2 += (endTime - startTime);
}
System.out.println("The duration for the first operation is :" + (duration1/1000));
System.out.println("The duration for second operation is :" + (duration2/1000));
}
结果是(以纳秒为单位)
第一次操作的持续时间是:140
第二个操作的持续时间是:123
根据此分析,布尔值 ^= boolean 比 boolean = !boolean 更快。