2

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

最后return是封装的:

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

最后return没有封装:

static bool MyClass::IsEqual(int A, int B)
{
    if (A == B)
    {
        return true;
    }
    return false;
}
4

4 回答 4

6

要回答您的问题 - 生成并查看汇编代码。我敢打赌汇编代码是相同的——所以性能上没有区别。

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

static bool MyClass::IsEqual(int A, int B)
{
    return (A == B);
}

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

于 2012-09-19T19:23:41.800 回答
5

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

它们都应该相同或接近。此外,你问错了问题。

一个更好的问题是,

我应该更喜欢哪个,为什么?

请记住,C++ 代码是为人类而非机器而设计的。鉴于此,选择一种编码风格而不是另一种的主要动机应该是它对人类的可读性。尽管这个考虑很重要,但不幸的是它也是主观的。底线是您必须自己决定哪个更好,但重要的是您要出于正确的原因提出正确的问题并考虑答案。

于 2012-09-19T19:28:13.867 回答
2

两个代码片段都应该产生完全相同的结果,所以这不是它们中的任何一个的论据。

真正决定使用哪个版本的是编码风格。if/变体的else优点是两个分支都在同一逻辑层上。有时这可能是这样写的一个很好的理由。

于 2012-09-19T19:27:07.363 回答
1

第二种形式更具可读性,因为它降低了嵌套级别。使用一种或另一种形式绝对没有性能损失。

于 2012-09-19T19:22:36.437 回答