首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >if语句中条件的优化

if语句中条件的优化
EN

Stack Overflow用户
提问于 2022-10-15 12:50:38
回答 1查看 61关注 0票数 -2

嗯,我知道这个标题几乎没有意义,但我找不到一个更好的理由来解释我的问题。

因此,我刚刚开始在LeetCode上做一些挑战,现在我正在迈出第一步。但有一种情况让我困惑。

所以我解决了一个叫做的问题--“1位数”,它基本上给出了一个无符号整数,想知道它的二进制表示中有多少个1。

首先,我写了这段代码;

代码语言:javascript
复制
class Solution {
public:
int hammingWeight(uint32_t n) {
    
    int answer=0;
    
    while(n>0)
    {
        
        if(n%2)answer++;
        
        n/=2;
        
    }
    
    return answer;
}
};

然后我意识到它的运行时间是3毫秒。

然后,我尝试其他解决方案来优化它,我已经编写了最快的代码(我认为)。

代码语言:javascript
复制
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命令“中的条件。

那么,为什么if(i%2==1)if(i%2)更快呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-15 13:01:14

事实并非如此。这两段代码都将生成同一机器代码

你的测量方法是错误的,你需要循环数百万次才能得到一个非偏置的结果,这将是一样的。

教训?不要试图优化if语句,在大多数情况下,您不会比编译器更聪明

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74079605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档