VB.NET 2008コンパイラはSelectCaseステートメントを選択的に最適化しますか?
たとえば、十分な数の整数のcaseを含むSelect Caseステートメントは、バイナリ検索として編成できます。
整数または他の基本的なデータ型が比較されている複数のElseIfを持つIfステートメントの代わりにSelectCaseを選択する必要があるかどうか知りたいので、これを尋ねます。
VB.NET 2008コンパイラはSelectCaseステートメントを選択的に最適化しますか?
たとえば、十分な数の整数のcaseを含むSelect Caseステートメントは、バイナリ検索として編成できます。
整数または他の基本的なデータ型が比較されている複数のElseIfを持つIfステートメントの代わりにSelectCaseを選択する必要があるかどうか知りたいので、これを尋ねます。
一般に、この種のパフォーマンスのマイクロ最適化に加えて、コードの可読性と保守性について心配する必要があります。
このスイッチが1000回(数百万回?)実行されているループ内にない限り、これがアプリのパフォーマンスのボトルベックになる可能性はほとんどありません。
一貫性を保つために、決定を下し、それに固執します。一般に、パフォーマンスのボトルネックがどこにあるかを分析するまで、コードをパフォーマンス調整しないでください。
この質問も参照してください。
Select Case
ElseIf
40の選択肢があると、40のステートメントの文字列よりも10倍以上高速になります。これは、二分探索で期待するよりもさらに改善されています。単純な整数は、計算されたgotoステートメントに相当する最新のマシンコードを使用していると思いSelect Case
ます。整数の値に基づいて適切な「ケース」に直接分岐するようにコンパイルされます。
私Select Case
は一緒に行くものだと思います。