1 public class Timing 2 { 3 private TimeSpan m_StartTime; 4 5 private TimeSpan duringTime; 6 7 public Timing() //构造函数用于初始化开始时间和持续时间 8 { 9 this.m_StartTime = new TimeSpan(0); //初始化的时候设置时间为00:00:00 10 this.duringTime = new TimeSpan(0); 11 } 12 13 public void StartTime() 14 { 15 GC.Collect(); //为了防止程序运行的时候有无用单元干扰提前进行GC收集 16 GC.WaitForPendingFinalizers(); //储存在堆中所有对象在最后都会调用finalizer方法,但是无法确定finalizer是否执行,所有要等待finalizer都运行完毕进行后面的步骤(此方法执行的时候线程会挂起) 17 m_StartTime = Process.GetCurrentProcess().Threads[0].UserProcessorTime; //得到当前进程的时间 18 } 19 20 public void StopTime() 21 { 22 duringTime = Process.GetCurrentProcess().Threads[0].UserProcessorTime.Subtract(m_StartTime); 23 //得到当前进程的时间过了多少时间即当前时间-开始(m_StartTime)的时间 24 } 25 26 public TimeSpan Result() 27 { 28 return duringTime; //返回运行时间 29 } 30 } 31 class Program 32 { 33 static void Main(string[] args) 34 { 35 36 int[] array = new int[10000]; //进行测试的时候初始化了一个容量为10000的int数组 37 Timing timing = new Timing(); //初始化计算的类 38 timing.StartTime(); //开始计算时间 39 Add(array); //数组每个都添加当前序号值的数 40 DisplayCount(array); //输出每个数 41 timing.StopTime(); //停止计算时间 42 Console.WriteLine(timing.Result()); //输出计算的时间 43 Console.ReadKey(); //暂停程序 44 } 45 46 public static void Add(int[] arr) 47 { 48 for (int i = 0; i < arr.Length; i++) 49 { 50 arr[i] = i; 51 } 52 } 53 public static void DisplayCount(int[] arr) 54 { 55 for (int i = 0; i < arr.Length; i++) 56 { 57 Console.WriteLine(arr[i]); 58 } 59 } 60 }
原文地址:https://www.cnblogs.com/kliine/p/10822995.html
时间: 2024-10-11 04:46:59