2011-08-19 17 views
0

哪個執行速度更快?C - 左移或自增(速度)

1:

n = n << 1; 

2:

n = n + n; 
+1

在什麼機器上?用什麼編譯器?周圍的代碼是什麼?答案取決於所有這些事情和更多。根據'n'的類型和值,這些操作無論如何都不一定是相同的操作。 – detly

+2

「預優化是萬惡之源。」使用最適合你的意思的那個。 – Stan

回答

4

原則,<<可以更快有符號的類型,因爲它是不太嚴格的定義。 n+n是在不溢出的情況下定義的,但n<<1僅在n非負並且結果不溢出時才被定義。

實際上,編譯器會爲兩者生成完全相同的機器碼。

6

任何一個優秀的編譯器將最終使他們兩個是相同的,所以我無法想象它的問題。