翻转Java布尔值的最快方法是什么?

时间:2016-01-18 17:55:01

标签: java boolean xor

哪种方式更快,资源更少:

boolean = !boolean
boolean ^= boolean

编辑:这不是基于意见的问题。有一个正确的答案。

2 个答案:

答案 0 :(得分:6)

我用以下代码测量。

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快。

答案 1 :(得分:1)

if (typeof anObject +AD0APQA9- 'undefined') +AHs- var anObject +AD0- +AHsAfQA7- +AH0- anObject.childObject +AD0- +AHs- init:function myFunction() +AHs- //code +AH0- +AH0- SP.SOD.executeOrDelayUntilEventNotified(anObject.childObject.init, 'sp.bodyloaded')+ADs- 可能更好,因为它更容易阅读。两者都不是精确的资源密集型,因此使用其中任何一个都不会真正改变性能。