三种计算c#程序运行时间的方法
三种计算c#程序运行时间的方法
第一种:
利用Stopwatch
利用c++ API
第一种:
利用 System.DateTime.Now
// example1: System.DateTime.Now method DateTime dt1 = System.DateTime.Now; System.Threading.Thread.Sleep(time_cap); DateTime dt2 = System.DateTime.Now; TimeSpan ts = dt2.Subtract(dt1); Console.WriteLine("example1 time {0}", ts.TotalMilliseconds);第二种
利用Stopwatch
// example2: Stopwatch class System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch(); sw.Start(); System.Threading.Thread.Sleep(time_cap); sw.Stop(); TimeSpan ts2 = sw.Elapsed; Console.WriteLine("example2 time {0}", ts2.TotalMilliseconds);第三种
利用c++ API
// example3: c++ API long count1 = 0; long count2 = 0; long freq = 0; double result = 0; QueryPerformanceFrequency(ref freq); QueryPerformanceCounter(ref count1); System.Threading.Thread.Sleep(time_cap); QueryPerformanceCounter(ref count2); result = (double)(count2 - count1) / (double)freq; Console.WriteLine("example3 time {0}", result);
测试结果:
example1 time 2001.486
example2 time 2000.6587
example3 time 2.00032488719712
二三两种方法结果比较准确
完整代码
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication { class Program { [System.Runtime.InteropServices.DllImport("Kernel32.dll")] static extern bool QueryPerformanceFrequency(ref long count); [System.Runtime.InteropServices.DllImport("Kernel32.dll")] static extern bool QueryPerformanceCounter(ref long count); static void Main(string[] args) { int time_cap = 2000; // example1: System.DateTime.Now method DateTime dt1 = System.DateTime.Now; System.Threading.Thread.Sleep(time_cap); DateTime dt2 = System.DateTime.Now; TimeSpan ts = dt2.Subtract(dt1); Console.WriteLine("example1 time {0}", ts.TotalMilliseconds); // example2: Stopwatch class System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch(); sw.Start(); System.Threading.Thread.Sleep(time_cap); sw.Stop(); TimeSpan ts2 = sw.Elapsed; Console.WriteLine("example2 time {0}", ts2.TotalMilliseconds); // example3: c++ API long count1 = 0; long count2 = 0; long freq = 0; double result = 0; QueryPerformanceFrequency(ref freq); QueryPerformanceCounter(ref count1); System.Threading.Thread.Sleep(time_cap); QueryPerformanceCounter(ref count2); result = (double)(count2 - count1) / (double)freq; Console.WriteLine("example3 time {0}", result); Console.ReadLine(); } } }
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇: javaweb中文字符编码乱码问题
- 下一篇:没有了