以下代码来自http://blogs.gotdotnet.com/ZHANBOS/commentview.aspx/fe108056-bf72-4029-accf-22ccb9e7bb7d
其原理是通过 P/Invoke,调用Win32的高分辨率性能计数器
public class HighResolutionTimer
{
private long start;
private long stop;
private long frequency;
public HighResolutionTimer()
{
QueryPerformanceFrequency (ref frequency);
}
public void Start ()
{
QueryPerformanceCounter (ref start);
}
public void Stop ()
{
QueryPerformanceCounter (ref stop);
}
public float ElapsedTime
{
get{
float elapsed = (((float)(stop - start)) / ((float) frequency));
return elapsed;
}
}
[System.Runtime.InteropServices.DllImport("KERNEL32.dll", CharSet=System.Runtime.InteropServices.CharSet.Auto)]
private static extern bool QueryPerformanceCounter( [In, Out] ref long performanceCount);
[System.Runtime.InteropServices.DllImport("KERNEL32.dll", CharSet=System.Runtime.InteropServices.CharSet.Auto)]
private static extern bool QueryPerformanceFrequency( [In, Out] ref long frequency);
}
To illustrate the use of this class, check the code below.
HighResolutionTimer timer = new HighResolutionTimer();
timer.Start();
//Perf Test
timer.Stop();
Console.WriteLine(timer.ElapsedTime);
关于此方法的注意事项http://support.microsoft.com/default.aspx?scid=kb;zh-cn;327809
类似代码可以在网上方便找到,有空时利用此方法来测量一下.net的各种操作的性能,仅供个人参考资料之用