如果逻辑上是可选的,我应该用`else {return ...}`封装最后一个`return`语句吗?

hkB*_*sai 2 c++ optimization performance if-statement code-size

在速度,性能和机器代码大小方面哪种格式更好?

最后return封装:

static bool MyClass::IsEqual(int A, int B)
{
    if (A == B)
    {
        return true;
    } 
    else
    {
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

最后return没有封装:

static bool MyClass::IsEqual(int A, int B)
{
    if (A == B)
    {
        return true;
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

Pio*_*ycz 6

回答你的问题 - 生成并查看汇编代码.我敢打赌汇编代码是相同的 - 因此性能没有区别.

if/else如果可能的话,我总是会删除,考虑到你的例子:

static bool MyClass::IsEqual(int A, int B)
{
    return (A == B);
}
Run Code Online (Sandbox Code Playgroud)

但我知道现实世界的例子并不像这样简单.


Joh*_*ing 5

在速度,性能和机器代码大小方面哪种格式更好?

它们应该全部相同或接近它.而且,你提出了错误的问题.

一个更好的问题是,

我应该选择哪个?为什么?

请记住,C++代码旨在被人类而不是机器读取.鉴于此,选择一种编码风格而不是另一种编码风格的主要动机应该是它对人类的可读性.同样重要的是,它也是不可思议的主观.最重要的是你必须自己决定哪个更好,但重要的是你正确地问正确的问题,并考虑答案.