3

switchケースを含むステートメントをstring(コンパイラーまたは JIT によって) ハッシュ・テーブルに最適化して、パフォーマンスを向上させることができる可能性があることをさまざまな場所で読みました。完全ではないハッシュ関数を含むハッシュテーブルは明らかにアイテムの順序を保証しないので、私は疑問に思っていました:

  1. C# コンパイラまたは JIT は、switchステートメントをハッシュ テーブルに変換して一定時間のパフォーマンスを提供する最適化を実行できますか?
  2. switchC#のステートメントは、 が上から下に順番にチェックされることを保証しますか?case
4

1 に答える 1

3

いいえ、これは純粋にコンパイラの実装の詳細であるため、順序が維持される保証はありません。したがって、現在は正しいとしても、たとえば、間違っている可能性があります。.net 5.1

switch/caseコンストラクトは、使用可能なさまざまなオプション間で一意のオプションを識別するために作成されます。したがって、パフォーマンスの観点からではなくても、順序は重要ではありませんが、それでも基本的には無関係であり、そうでない場合は、上記の理由で予測できませんでした。

したがって、パフォーマンスのボトルネックを探している場合は、これに注意を払わずに、プログラムの他の部分を調べてください。

于 2013-02-19T11:06:02.303 に答える