C#计算一段程序运行时间的三种方法
第一种方法利用System.DateTime.Now:
1
2
3
4
5
6
7
8
9
10
|
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); } |
第二种用Stopwatch类(System.Diagnostics):
1
2
3
4
5
6
7
8
9
10
11
|
static void SubTest() { Stopwatch sw = new Stopwatch(); sw.Start(); //耗时巨大的代码 sw.Stop(); TimeSpan ts2 = sw.Elapsed; Console.WriteLine( "Stopwatch总共花费{0}ms." , ts2.TotalMilliseconds); } |
第三种用API实现:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
[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); } |