enum評価とintのパフォーマンス比較
-
03-07-2019 - |
質問
if (myInt == CONST_STATE1)
and
if (myEnum == myENUM.State1)
in c#?
解決
C#では、列挙型はコンパイラによって定数になるようにインライン化されているため、利点はコードの読みやすさです
他のヒント
Enumを使用する際に注意すべきことは、リフレクションを必要とする操作を使用しないことです(または、それらを注意して使用することです)。例:
- myEnumValue.ToString()。
- Enum.Parse()
- Enum.IsDefined()
- Enum.GetName()
- Enum.GetNames()
定数の場合、リフレクションを必要とする操作を実行するオプションは存在しません。ただし、列挙型の場合は実行されます。したがって、これには注意する必要があります。
列挙型の検証/リフレクションに関連する操作がCPU時間の5%までかかったプロファイルレポートを見ました(APIメソッドの呼び出しごとに列挙型の検証が行われたシナリオ)。これは、使用されている列挙型のリフレクションの結果をキャッシュするクラスを記述することで大幅に削減できます。
とはいえ、設計の観点から理にかなっていることに基づいて、列挙型と定数のどちらを使用するかを決定することをお勧めします。これは、チームがリフレクションを含む操作のパフォーマンスへの影響を認識していることを確認することです。
また、これについて心配する必要があるかどうかはまったくわかりません。それは時期尚早の最適化のように聞こえます。どのシステムでも、enum比較よりも大きなボトルネックがあると確信しています。 :)
所属していません StackOverflow