string.CompareOrdinal(效率高),checked(檢查溢出)

幾種比較方法的效率 

            int num = 10000000;
            string str1 = "abcdaefvff";
            string str2 = "abcdsafsafed";
            Stopwatch stopwatch = new Stopwatch();

            stopwatch.Start();
            for(int i=0;i < num; i++)
            {
                string.CompareOrdinal(str1, str2);// StringComparison.Ordinal 使用序號排序規則比較字符串。
            }
            stopwatch.Stop();
            Console.WriteLine(stopwatch.ElapsedMilliseconds);///84ms

            stopwatch.Restart();
            for (int i = 0; i < num; i++)
            {
                string.Compare(str1, str2);
            }
            stopwatch.Stop();
            Console.WriteLine(stopwatch.ElapsedMilliseconds);//2349ms

            stopwatch.Restart();
            for (int i = 0; i < num; i++)
            {
                string.Compare(str1, str2,StringComparison.Ordinal);//等效於 string.CompareOrdinal(str1, str2)
            }
            stopwatch.Stop();
            Console.WriteLine(stopwatch.ElapsedMilliseconds);//86ms

            stopwatch.Restart();
            for (int i = 0; i < num; i++)
            {
                str1.CompareTo(str2);
            }
            stopwatch.Stop();
            Console.WriteLine(stopwatch.ElapsedMilliseconds);//2324ms
            Console.ReadKey();

可自行看反編譯,爲何 string.Compare(str1, str2,StringComparison.Ordinal)效率會比string.Compare(str1, str2

 

Checked


  int i=2147483647;
  int j=checked(i+1);


  checked
  {    
      int i=2147483647;  
      int j=m+1;   
  }
  

兩種方式檢查溢出,溢出後會拋異常,可避免 j 變成負數等不期望出現的值。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章