计算方法或模块的执行时间
/// <summary> /// 计算执行时间的类 /// </summary> public class QueryPerformance { [DllImport("Kernel32.dll")] private static extern bool QueryPerformanceCounter(out long performanceCount); [DllImport("Kernel32.dll")] private static extern bool QueryPerformanceFrequency(out long frequency); private long begintTime = 0;//开始时间 private long endTime = 0;//结束时间 private long frequency = 0;//处理器频率 /// <summary> /// 开始时间 /// </summary> public long BegintTime { get { return begintTime; } } /// <summary> /// 结束时间 /// </summary> public long EndTime { get { return endTime; } } /// <summary> /// CPU频率 /// </summary> public long Frequency { get { return frequency; } } /// <summary> /// 构造函数,获取CPU频率 /// </summary> public QueryPerformance() { QueryPerformanceFrequency(out frequency);//获取频率 } /// <summary> /// 开始计算 /// </summary> public void Start() { QueryPerformanceCounter(out begintTime); } /// <summary> /// 停止计时 /// </summary> /// <param name="showRecord">是否输出计时</param> /// <returns>计时</returns> public double Stop(bool showRecord) { QueryPerformanceCounter(out endTime); if (showRecord) { return TastTime; } return 0.0D; } /// <summary> /// 花费的时间 /// </summary> public double TastTime//花费时间:单位S { get { if (frequency > 0) return (double)(endTime - begintTime) / frequency; else return 0; } } }
接下来是使用方法:
QueryPerformance queryPerformance = new QueryPerformance(); queryPerformance.Start(); //需要知道执行时间的模块 double time = queryPerformance.Stop(true);
想找一个无人的角落发呆……