「else if」は「switch() case」よりも高速ですか? [重複] 質問する

「else if」は「switch() case」よりも高速ですか? [重複] 質問する

私は元 Pascal ユーザーで、現在 C# を学習中です。質問は次のとおりです。

以下のコードはスイッチを作るよりも速いですか?

int a = 5;

if (a == 1)
{
    ....
}
else if(a == 2)
{
    ....
}
else if(a == 3)
{
    ....
}
else if(a == 4)
{
    ....
}
else
    ....

そしてスイッチ:

int a = 5;

switch(a)
{
    case 1:
        ...
        break;

    case 2:
        ...
        break;

    case 3:
        ...
        break;

    case 4:
        ...
        break;

    default:
        ...
        break;


}

どちらが速いですか?

私のプログラムも同様の構造(非常に多くの「else if」ステートメント)を持っているので、質問しています。これらをスイッチに変換する必要がありますか?

ベストアンサー1

アイテムが少数の場合、違いはわずかです。アイテムが多数ある場合は、必ずスイッチを使用する必要があります。

スイッチに 5 つ以上の項目が含まれている場合、ルックアップ テーブルまたはハッシュ リストを使用して実装されます。これは、すべての項目が同じアクセス時間を取得することを意味します。一方、if: のリストでは、前のすべての条件を最初に評価する必要があるため、最後の項目に到達するまでに時間がかかります。

おすすめ記事