2014年1月25日 星期六

[C#] 字串反轉 (reverse) (續) 三種方法時間大測試!!!!!!!!!

反轉abc的三個方法請先參考 : 這裡

有興趣的朋友 自己跑跑看,很有趣!

三個方法都跑一百萬次~結果是 :

自己開char[] > StringBuilder > ArrayReverse
               82   >         107      > 117 (毫秒)

範例 :



  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Diagnostics;//引用System.Diagnostics命名空間
  7. namespace ConsoleApplication1
  8. {
  9.     class Program
  10.     {
  11.         static void Main(string[] args)
  12.         {
  13.             Console.Write("請輸入一串要倒轉的字串 : ");
  14.             string str = Console.ReadLine();
  15.             //建立時間計時物件
  16.             Stopwatch sw = new Stopwatch();
  17.             //先歸零一下
  18.             sw.Reset();
  19.             //開始測量
  20.             sw = Stopwatch.StartNew();
  21.             ///要執行的程式放這
  22.             for (int i = 0; i < 1000000; i++)
  23.             {
  24.                 string rev = reverse(str);
  25.             }
  26.             ///要執行的程式放這
  27.             //結束
  28.             sw.Stop();
  29.             //Stopwatch 有三種屬性可以看時間 Eclapsed milliseconds tickts
  30.             TimeSpan time = sw.Elapsed;
  31.             Console.WriteLine("運轉一百萬次消耗時間 : {0:g}", time);
  32.             long ST = sw.ElapsedMilliseconds;
  33.             Console.WriteLine("運轉一百萬次消耗時間 : {0} 毫秒", ST);
  34.         }
  35.         public static string reverse(string str)
  36.         {
  37.             if (string.IsNullOrEmpty(str))
  38.             {
  39.                 throw new ArgumentException("參數不合法");
  40.             }
  41.             ///方法一 使用char[]
  42.             //char[] temp = new Char[str.Length];
  43.             //for (int i = 0; i < str.Length; i++)
  44.             //{
  45.             //    temp[i] = str[str.Length - i - 1];
  46.             //}
  47.             //return new string(temp);
  48.             //return string.Join("", temp);
  49.             //方法二  使用stringbuilder
  50.             //StringBuilder sb = new StringBuilder(str.Length);
  51.             //for (int i = str.Length - 1; i >= 0; i--)
  52.             //{
  53.             //    sb.Append(str[i]);
  54.             //}
  55.             //return sb.ToString();
  56.             ///方法三  使用.net 函式庫
  57.             ///
  58.             char[] temp = str.ToCharArray();
  59.             Array.Reverse(temp);
  60.             return new string(temp);
  61.         }
  62.     }
  63. }

沒有留言:

張貼留言