1. ホーム
  2. c#

[解決済み] switch() case」よりも「else if」の方が速い?重複] [重複] [重複] [重複

2022-03-26 14:05:16

質問

元Pascalで、現在C#を勉強している者です。 質問は以下の通りです。

下のコードはswitchを作るより速いですか?

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" 文)なので、質問させていただきました。 それらをスイッチに変えるべきでしょうか?

どのように解決するのですか?

数個のアイテムであれば、その差はわずかです。アイテムが多い場合は、絶対にスイッチを使うべきです。

switchに5つ以上の項目がある場合、ルックアップテーブルまたはハッシュリストを使って実装されます。これは、すべての項目のアクセス時間が同じであることを意味し、最後の項目が以前のすべての条件を最初に評価する必要があるため、より多くの時間を要するif:sのリストと比較されます。