获取一个函数或者一段代码的执行时间在C#中有以下几种方法。
第一种方法(获取粗略的时间):
DateTime startTime = DateTime.Now;//记录将要执行目标代码段的时间点
//_________________要执行的函数______________________
//Code……
DateTime endTime = DateTime.Now; TimeSpan span = endTime - startTime;
Console.WriteLine(span);
第二种方法(获取精确的时间):
这里需要用到C#提供的一个类StopWatch---(提供一组方法和属性,可用于准确地测量运行时间),它位于System.Diagnostics
命名空间下。
Stopwatch stopwatch = new System.Diagnostics.Stopwatch();
stopwatch.Start(); //开始监视目标代码段
//_________________要执行的函数______________________
//Code……
stopwatch.Stop(); //停止监视目标代码段
TimeSpan timeSpan = stopwatch.Elapsed; //获取总时间
double hours = timeSpan.TotalHours; //小时
double minutes = timeSpan.TotalMinutes; //分钟
double seconds = timeSpan.TotalSeconds; //秒数
double milliseconds = timeSpan.TotalMilliseconds; //毫秒数
第三种方法使用Environment.TickCount属性,它返回获取系统启动后经过的毫秒数。请注意,因为它派生自系统计时器的分辨率
TickCount 属性仅限于系统计时器,它通常在 10 到 16 毫秒为单位的范围的分辨率。使用方法也是如同第一种那样分别进行记录,然
后相减即可
第四种方法(获取高精度时间):
[System.Runtime.InteropServices.DllImport("Kernel32.dll")]
static extern bool QueryPerformanceCounter(ref long PerformanceCounter); //返回高精确度性能计数器的值,用来精确计算执行时间
[System.Runtime.InteropServices.DllImport("Kernel32.dll")]
static extern bool QueryPerformanceFrequency(ref long PerformanceFrequency);//返回硬件支持的高精度计数器的频率
static void Main(string[] args)
{
long liPerfFreq = 0, timeStart = 0, timeEnd =0;
QueryPerformanceFrequency(ref liPerfFreq);
QueryPerformanceCounter(ref timeStart);
//_________________要执行的函数______________________
//Code……
QueryPerformanceCounter(ref timeEnd);
decimal result = (timeEnd - timeStart) / (decimal)liPerfFreq;
Console.WriteLine(result);
<span style="font-family:KaiTi_GB2312;"> }</span>