日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

用异或来交换两个变量能提快速度是错误的

發布時間:2025/7/14 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用异或来交换两个变量能提快速度是错误的 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在進行兩個變量的時候,常常會看到有些書誤人子弟的推薦使用異或的方式: 方式一 {
? x = x ^ y; y = x ^ y; x = x ^ y; } 而不是採用暫時變量實現交換: 方式二 { int temp; temp = a; ? ?? a = b; b = temp; } 美其名曰:節省內存,提高執行速度。

暫時變量交換的方式:
可是,真的節省了內存嗎? 使用這樣的方式大部分時候,沒有節省內存。由于。普通情況下編譯器會將方式二中的暫時變量優化到寄存器中,不使用堆棧。
真的提高了執行速度嗎? 下邊的博客給出了非常具體的解答。

http://blog.csdn.net/do2jiang/article/details/4549679 http://blog.csdn.net/solstice/article/details/5166912 因為方式一,每一次運行都會多進行三次異或運算。

又因為方式一的代碼,在編譯器理解起來。可能比較困難所以編譯器翻譯出來的代碼,運行效率更低。


關于優化: http://www.php100.com/html/webkaifa/PHP/PHPyingyong/2012/1224/11834.html “過早的優化是萬惡之源”,當我們沒有確定程序影響性能最重要的20%代碼時,最好不要進行優化。同一時候。在優化時,不要過于相信經驗。由于CPU技術,編譯技術。操作系統等等。都會讓看似可行的技術,失效。

在優化前,通過實際的執行確定影響性能的代碼,然后進行優化。
最后。從軟件project的角度看,代碼是寫給人看的。最easy理解的代碼,被維護的代價也最小。方式二的代碼更easy閱讀。
結語: 編譯器非常強大,CPU技術進步非常快,我們的經驗積累反而是最慢的。

多反思,多總結。


附注: 假設要作為面試題。交換一個32位無符號整形數的方案,倒是更能夠考慮一下採用位運算的方式解決。

總結

以上是生活随笔為你收集整理的用异或来交换两个变量能提快速度是错误的的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。