C#计算一段程序运行时间的三种方法
直接代码:
第一种方法利用System.DateTime.Now
- static void SubTest()
- {
- DateTime beforDT = System.DateTime.Now;
- //耗时巨大的代码
- DateTime afterDT = System.DateTime.Now;
- TimeSpan ts = afterDT.Subtract(beforDT);
- Console.WriteLine("DateTime总共花费{0}ms.", ts.TotalMilliseconds);
- }
1 public static void SubTest()
2 {
3 DateTime beforeDT = System.DateTime.Now;
4 int[] a = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 };
5 //Shuffle(a) is the function you want to test.
6 Shuffle(a);
7 DateTime afterDT = System.DateTime.Now;
8 TimeSpan ts = afterDT.Subtract(beforeDT);
9 Console.WriteLine("DateTime costed for Shuffle function is: {0}ms",ts.TotalMilliseconds);
10 }
第二种用Stopwatch类(System.Diagnostics)
1 public static void SubTest()
2 {
3 Stopwatch sw = new Stopwatch();
4 sw.Start();
5 //Shuffle(a) is the function you want to test.
6 int[] a = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 };
7 Shuffle(a);
8 sw.Stop();
9 TimeSpan ts = sw.Elapsed;
10 Console.WriteLine("DateTime costed for Shuffle function is: {0}ms", ts.TotalMilliseconds);
11 }
第三种用API实现:个人感觉以秒为单位来计算程序耗时,数量级有点大了,还是推荐前面两种毫秒级别的……
- [System.Runtime.InteropServices.DllImport("Kernel32.dll")]
- static extern bool QueryPerformanceCounter(ref long count);
- [System.Runtime.InteropServices.DllImport("Kernel32.dll")]
- static extern bool QueryPerformanceFrequency(ref long count);
- static void SubTest()
- {
- long count = 0;
- long count1 = 0;
- long freq = 0;
- double result = 0;
- QueryPerformanceFrequency(ref freq);
- QueryPerformanceCounter(ref count);
- //耗时巨大的代码
- QueryPerformanceCounter(ref count1);
- count = count1 - count;
- result = (double)(count) / (double)freq;
- Console.WriteLine("QueryPerformanceCounter耗时: {0} 秒", result);
- }
1 [System.Runtime.InteropServices.DllImport("Kernel32.dll")]
2 static extern bool QueryPerformanceCounter(ref long count);
3 [System.Runtime.InteropServices.DllImport("Kernel32.dll")]
4 static extern bool QueryPerformanceFrequency(ref long count);
5 public static void SubTest()
6 {
7 long count = 0;
8 long count1 = 0;
9 long freq = 0;
10 double result = 0;
11 QueryPerformanceFrequency(ref freq);
12 QueryPerformanceCounter(ref count);
13 //Shuffle(a) is the function you want to test.
14 int[] a = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 };
15 Shuffle(a);
16 QueryPerformanceCounter(ref count1);
17 count = count1 - count;
18 result = (double)(count) / (double)freq;
19 //Note:The result is counted by second.
20 Console.WriteLine("DateTime costed for Shuffle function is: {0} s", result);
21 }


浙公网安备 33010602011771号