作者:vuefine
文献:
- Data Structures and Algorithms Using C# |Michael Mcmillan
- 参考博客:http://www.th7.cn/Program/net/201410/295545.shtml
平台:.NET 2.0+
自定义一个统计代码执行时间的类CalcTiming,考虑了:
- 在统计执行过程中,不允许有垃圾回收。即在统计代码执行时间之前,就让GC完成垃圾回收。
确保统计的是当前进程中代码的执行时间。
编写代码如下:
public class CalcTiming
{
TimeSpan startTime;
private TimeSpan endTime;
TimeSpan duration;
public CalcTiming()
{
startTime = new TimeSpan(0);
duration = new TimeSpan(0);
}
public void StartTime()
{
//强制对所有代进行垃圾回收
GC.Collect();
//挂起线程,终结器线程清空该队列为止
GC.WaitForPendingFinalizers();
//用户运行代码的起始时间
startTime = Process.GetCurrentProcess().UserProcessorTime;
}
//统计的代码执行完毕的时间
public void StopTime()
{
endTime = Process.GetCurrentProcess().UserProcessorTime;
duration = endTime.Subtract(startTime);
}
//返回统计的代码执行消耗的时间
public TimeSpan Result()
{
return duration;
}
}
运用以上CalcTiming类,统计显示数组的消耗时间:
class Program
{
static void Main(string[] args)
{
int[] nums = new int[100000];
BuildArray(nums);
CalcTiming calcTime= new CalcTiming();
calcTime.StartTime();
DisplayNums(nums);
calcTime.StopTime();
Console.WriteLine(string.Format("共用时间:{0} ms",calcTime.Result().TotalMilliseconds));
Console.Read();
}
static void BuildArray(int[] arr)
{
for (int i = 0; i < 100000; i++)
arr[i] = 1;
}
static void DisplayNums(int[] arr)
{
for (int i = 0; i <= arr.GetUpperBound(0); i++)
Console.Write(arr[i] + " ");
}
}
总结,在接下来用C#描述所有数据结构,统计消耗的时间时,采用CalcTiming对象。
源码下载地址:
http://download.csdn.net/detail/daigualu/9771778