整型 右移 與 除法 的優化比較

2021-06-01 22:52:57 字數 639 閱讀 4309

如今網路上有一種呼聲,說現在的編譯器足夠智慧型,會對**自動地進行一些常見的優化,一些老的優化方法已經不再適用了,比如用右移代替除法運算、預計算等等。

很可惜,如今的c# 雖然具有一些編譯優化的功能,但還不象網路上所傳頌的智慧型編譯器那樣的智慧型。

經過實驗發現,用右移代替除法運算、預計算等等技巧顯然並未過時;經過實驗發現:對於整形來說,右移一位確實比除以2要快一些,大約快了 2%。

using system;

namespace speed

timespan ts = datetime.now - dt;

console.writeline("/ cost time ", ts.tostring());

dt = datetime.now;

for (i = 0; i < 1000000000; i++)

ts = datetime.now - dt;

console.writeline(">> cost time ", ts.tostring());

console.read();}}

}

/ cost time 00:00:02.8941656

>> cost time 00:00:02.8731643

無符號整型與有符號整型的比較

喵哥最近遇到乙個問題,比較兩個數的時候經常會出現很嚴重的bug,比如 unsigned int a 0 int b 2 if a b b 1 cout b endl 乍一看這段 輸出的應該是 2,0肯定不會小於 2嘛,但是事實上,b 1 這行 是會被執行的。如果大家對算術轉換比較熟悉的話,應該會想到...

C 11 有符號整型與無符號整型的比較運算

在執行讀取操作的時候,使用cin str string物件會自動忽略開頭的空白,並從第乙個真正的字元開始讀取,直到遇見下乙個空白,但是getline cin,str 函式不會忽略空白,而是自動讀取一行的所有值,直到換行符出現,並且將換行符也讀入了,然後把所讀去的內容存到string物件去 注意不存在...

整型包裝類值的比較

所有整型包裝類物件值的比較必須使用equals方法。先看下面這個例子 integer x 3 integer y 3 system.out.println x y true integer a new integer 3 integer b new integer 3 system.out.prin...