또한 ToString() 성능 향상에 대해 설명합니다.

또한 ToString() 성능 향상에 대해 설명합니다.
어제'성능이 7천 배 차이 나는 토스트링 방법'이라는 글을 보고 작가의 이런 좋은 성능 의식과 탐색 정신에 감탄했고, 이전에는 이 점을 눈치채지 못했다.
그런데switch , , , , switch , , ToString() , , key-value 。

 public static class TestClass
    {
        public static Dictionary<int, string> EnumLoginErrorNames = new Dictionary<int, string>();

        //       
        static TestClass()
        {
            AddEnumLoginErrorToDic(); //                        
        }

        public enum EnumLoginError
        {
                  ,
                ,
                 ,
                
        }

        private static void AddEnumLoginErrorToDic()
        {

            string[] _names = Enum.GetNames(typeof(EnumLoginError));
            int[] _values = Enum.GetValues(typeof(EnumLoginError)) as int[];

            for (int i = 0; i < _values.Length; i++)
            {
                EnumLoginErrorNames.Add(_values[i], _names[i]);
            }            
        }
    }

:(asp.net , ToString )

protected void Page_Load(object sender, EventArgs e)
        {
            Stopwatch sw = new Stopwatch();
            int _max = 1000000,i=0;

            string _temp = TestClass.EnumLoginErrorNames[(int)TestClass.EnumLoginError.     ];//     ,    

            //Dictionary       
            sw.Start();
            for (i = 0; i < _max; i++)
            {

                _temp = TestClass.EnumLoginErrorNames[(int)TestClass.EnumLoginError.     ]; 
            }
            sw.Stop();
            Debug.WriteLine("Dictionary    :" + sw.ElapsedMilliseconds);
            sw.Reset();

            //         
            sw.Start();
            for (i = 0; i < _max; i++)
            {
                _temp = TestClass.EnumLoginError.     .ToString();
            }
            sw.Stop();

            Debug.WriteLine("       :" + sw.ElapsedMilliseconds);


        }

Dictionary :28
:1384

, switch , , , , 。 , , , , 。

: , , , 。

좋은 웹페이지 즐겨찾기