测量C#代码的运行时间

来源:互联网 发布:js运动小球重力 编辑:程序博客网 时间:2024/04/30 06:43

如何测量C#代码的运行时间

(1)用Datatime和TmeSpan

这个不说了,在要测量的代码前后加上2个DateTime.Now,2者相减,得到一个TmeSpan。

DateTime d = DateTime.Now;

for (int i = 0; i < 1000; i++)

{

 ++i;

}

Console.WriteLine(DateTime.Now - d);

(2)用Stopwatch,简单,明了,精确。

// 使用 StopWatch 进行测量

Stopwatch sw = new Stopwatch();

sw.Start();

 

 for (int i = 0; i < 1000; i++) { ++i; }

 

sw.Stop();

Console.WriteLine(sw.Elapsed);

 

StopWatch 几个关键属性和方法。 
Elapsed :获取当前实例测量得出的总运行时间。在测试期间或者结束时均可获取。 
IsRunning : 获取一个指示 Stopwatch 计时器是否在运行的值。  
Start : 开始或继续测量某个时间间隔的运行时间。 多次调用 Start 前,需要使用 Reset 重置,否则会累加多次测量结果。 
Stop : 停止测量某个时间间隔的运行时间。 
Reset : 停止时间间隔测量,并将运行时间重置为零。

(3)使用QueryPerformanceFrequency函数和QueryPerformanceCounter函数,这个比较麻烦,还用到了Interop。

 

using System;class Class1{    [System.Runtime.InteropServices.DllImport("Kernel32.dll")]    static extern bool QueryPerformanceCounter(ref long count);    [System.Runtime.InteropServices.DllImport("Kernel32.dll")]    static extern bool QueryPerformanceFrequency(ref long count);    [STAThread]    static void Main(string[] args)    {        long count = 0;        long count1 = 0;        long freq = 0;        double result = 0;        QueryPerformanceFrequency(ref freq);        QueryPerformanceCounter(ref count);        //开始的时候没有这层循环,所得数据浮动很大,添加这层循环来使得结果更加平均        for (int i = 0; i < 500; i++)        {            //需要测试的模块        }        QueryPerformanceCounter(ref count1);        count = count1 - count;        result = (double) (count) / (double) freq;        Console.WriteLine("耗时: {0} 秒", result);        Console.ReadLine();    }}

原创粉丝点击