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

2番目の形式は、ネストレベルが低くなるため、少し読みやすくなります。いずれかのフォームを使用しても、パフォーマンスが低下することはありません。

于 2012-09-19T19:22:36.437 に答える