.net 2.0中存在一个高精度的计数器StopWartch,
但.net 1.1中却不存在这个计数,可以使用Win32API来模拟这个类,如下:
public class StopWatch
{
[DllImport("KERNEL32")]
private static extern bool QueryPerformanceCounter(
out long lpPerformanceCount);
[DllImport("Kernel32.dll")]
private static extern bool QueryPerformanceFrequency(out long lpFrequency);
private long start;
private long stop;
private long frequency;
Decimal multiplier = new Decimal(1.0e9);
public StopWatch()
{
if (QueryPerformanceFrequency(out frequency) == false)
{
throw new Exception("Frequency not supported");
}
}
public void Start()
{
QueryPerformanceCounter(out start);
}
public void Stop()
{
QueryPerformanceCounter(out stop);
}
public double Duration(int iterations)
{
return ((((double)(stop - start)* (double) multiplier) / (double) frequency)/iterations);
}
}