亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用臨時變量或不帶臨時變量交換號碼的性能差異

使用臨時變量或不帶臨時變量交換號碼的性能差異

智慧大石 2022-09-07 21:19:12
在互聯網的深處,我發現了以下帖子:在不使用新變量的情況下交換兩個數字始終是一個好方法。這有助于您的應用程序以內存和性能為導向。并建議使用以下代碼:int firstNum = 10;int secondNum = 20;firstNum = firstNum + secondNum;secondNum = firstNum - secondNum;firstNum = firstNum - secondNum;而不是使用臨時變量。老實說,這對我來說聽起來像是一群笨蛋。我知道,在現實環境中,這樣的微弱幾乎不會有任何區別,但讓我感興趣的是,在這種情況下,避免使用新變量會有什么不同嗎?
查看完整描述

3 回答

?
一只斗牛犬

TA貢獻1784條經驗 獲得超2個贊

這是一堆巴洛尼;這樣的提示僅在早期計算機上具有任何價值(具有嚴重的寄存器限制)。在現代計算機上,這不是問題。使用臨時變量(首選可讀性更強的代碼)。


查看完整回答
反對 回復 2022-09-07
?
慕標琳琳

TA貢獻1830條經驗 獲得超9個贊

這不僅是一個可怕的想法,它甚至不是一個可怕想法的良好實現!老把戲是:


a^=b;

b^=a;

a^=b;

那個不會有不足/溢出的問題,并且真的會讓你的同事更加困惑。我的意思是,如果你要去混亂,表現不佳的代碼...一路走來!


順便說一句,我通常會說,如果你認為你可能會從以稍微不那么明顯的方式做某事中獲得一些性能優勢,那就永遠不要這樣做。首先,你可能錯了,你的解決方案并不快。其次,Java已經非??炝?,這可能并不重要。第三,隨著時間的推移,java將改進“明顯”的方式,并使用運行時編譯器使它們更快。它不會改善你的黑客攻擊,甚至可能使它變慢。


如果你不相信我,你可能仍然相信每次連接兩個字符串時都應該使用stringbuilder......



查看完整回答
反對 回復 2022-09-07
?
慕少森

TA貢獻2019條經驗 獲得超9個贊

public class SwapTest {


    int firstNum = 10;

    int secondNum = 20;


    public static void main(String args[])

    {

        SwapTest swap2Numbers = new SwapTest();

        long before = System.currentTimeMillis();

        for (int i = 0; i < 1000000; i++) {

            swap2Numbers.proceedNoInterimVariable();

        }

        System.out.println(" no temp variable took " + (System.currentTimeMillis()-before));


        before = System.currentTimeMillis();

        for (int i = 0; i < 1000000; i++) {

            swap2Numbers.proceedWithInterimVariable();

        }

        System.out.println("with temp variable took " + (System.currentTimeMillis()-before));

    }


    private void proceedNoInterimVariable()

    {


        firstNum = firstNum + secondNum;

        secondNum = firstNum - secondNum;

        firstNum = firstNum - secondNum;

    }


    private void proceedWithInterimVariable()

    {

        int temp = firstNum;

        firstNum = secondNum;

        secondNum = temp;

    }


}

從我的系統上,臨時變量版本的性能要快得多。


 no temp variable took 11

 with temp variable took 4


查看完整回答
反對 回復 2022-09-07
  • 3 回答
  • 0 關注
  • 109 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號