回答編集履歴
1
追記
answer
CHANGED
@@ -3,4 +3,14 @@
|
|
3
3
|
コンパイラの最適化によってswitch文がテーブルジャンプに最適化されることは割とあります。
|
4
4
|
C#も[SWITCH](https://docs.microsoft.com/ja-jp/dotnet/api/system.reflection.emit.opcodes.switch?view=netframework-4.8)命令によるジャンプテーブルになる場合があります。
|
5
5
|
|
6
|
-
[適当に調べたところ](https://sharplab.io/#v2:EYLgHgbALANALiAlgGwD4AEBMBGAsAKHQGYACLEgYRIG8CT6zTEA7OEgWQAoW3EBKGnQbCAzgHdEcAMYALbn1r5hyhlICGIgKYkADCDIB2EpgDcQlcPVaS2feiNEzSi5Y3bMdo1CcvhAej8SK20iTxJvc18AoLdwsIBWH196aOCSeLCIJOTU2Igwg2yowLSDMIBOIpcAE00AMzUAV2QEQxIAWmwqhgBfSL78HqA=)3分岐以上ではジャンプテーブルを使うようです。
|
6
|
+
[適当に調べたところ](https://sharplab.io/#v2:EYLgHgbALANALiAlgGwD4AEBMBGAsAKHQGYACLEgYRIG8CT6zTEA7OEgWQAoW3EBKGnQbCAzgHdEcAMYALbn1r5hyhlICGIgKYkADCDIB2EpgDcQlcPVaS2feiNEzSi5Y3bMdo1CcvhAej8SK20iTxJvc18AoLdwsIBWH196aOCSeLCIJOTU2Igwg2yowLSDMIBOIpcAE00AMzUAV2QEQxIAWmwqhgBfSL78HqA=)3分岐以上ではジャンプテーブルを使うようです。
|
7
|
+
|
8
|
+
|
9
|
+
---
|
10
|
+
|
11
|
+
**追記**
|
12
|
+
ついでにgccによるC言語の場合[さらに簡潔になり](https://godbolt.org/z/jXm2eR)ジャンプがなくなります。
|
13
|
+
基本的にこのレベルの**コンパイラができる最適化**は人間がやる理由がありません。
|
14
|
+
古い・もしくは最適化しないコンパイラを使わざるを得ない時、計測の結果、性能が足りない時に行う最後の手段です。
|
15
|
+
|
16
|
+
C#が動く時点で、そんな曲芸が必要な環境はほぼ皆無だと思います。
|