好吧,我知道這個標題幾乎沒有意義,但我找不到更好的標題來解釋我的問題。
所以我剛剛開始在 LeetCode 上進行挑戰,現在我正處于第一步。但是有一種情況讓我很困惑。
所以我正在解決名為“Number of 1 Bits”的問題,它基本上給你一個無符號整數,并想知道它的二進制表示中有多少個 1。
所以首先,我寫了這段代碼;
class Solution {
public:
int hammingWeight(uint32_t n) {
int answer=0;
while(n>0)
{
if(n%2)answer ;
n/=2;
}
return answer;
}
};
然后我意識到它的運行時間為 3 毫秒。
然后我嘗試了其他解決方案來優化它,并且我撰寫了最快的代碼(我認為)。
class Solution {
public:
int hammingWeight(uint32_t n) {
int answer=0;
while(n>0)
{
if(n%2==1)answer ;
n/=2;
}
return answer;
}
};
所以這個的運行時間為 0 毫秒。
我想既然if(i%2)比較少,那會更快。
唯一的區別是“if 命令”中的條件。
那么為什么 isif(i%2==1)比 快if(i%2)?
uj5u.com熱心網友回復:
它不是。您的兩個代碼都將產生相同的機器代碼。
您的測量方法是錯誤的,您需要將該函式回圈數百萬次才能獲得無偏差的結果,并且結果是一樣的。
課程?不要試圖優化 if 陳述句,大多數情況下你不會比編譯器聰明
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/517961.html
標籤:C if 语句优化比较汉明重量
上一篇:幾個if條件?
