Be Careful About Enum Performance Trap

RiCo 技術農場
RiCosNote
Published in
Sep 5, 2021

列舉型別(Enum)我相信大家很常用,定義各種列舉型別實務上也很常見,

根據預設,列舉成員的相關常數值為類型 int ; 它們是從零開始,並依照定義文字順序遞增加1。

對於任何列舉型別都可和基礎型別進行轉換,如下

public enum Season{Spring,Summer,Autumn,Winter}public class EnumConversionExample{public static void Main(){Season a = Season.Autumn;Console.WriteLine($"Integral value of {a} is {(int)a}");  // output: Integral value of Autumn is 2var b = (Season)1;Console.WriteLine(b);  // output: Summervar c = (Season)4;Console.WriteLine(c);  // output: 4}}

前一段時間我在追系統問題,偶然發現某段函式大量使用enum ToString,

看完下面簡單測試,你就會知道enumToString對系統效能影響

結果

可以看到原生ToString的記憶體分配相差24倍,執行時間相差約48倍,

當要取得相關字串型別,建議使用nameof運算式(執行期間不會有任何作用)。

💯RiCo技術空間:技術實戰課程和電子書

Reference:

Enumeration types

nameof

--

--

RiCo 技術農場
RiCosNote

分享工作上實戰經驗,如SQL Server,NetCore,C#,WEBApi,Kafka,Azure…等,Architect,Software Engineer, Technical Manger,Writer and Speaker