C# 計時器
C#中一共有4中常用的計時器:
//以QueryPerformanceCounter為例:
public class Program
{
//引用Win32 API 中的 QueryPerformanceCounter() 方法
//該方法引來查詢任意時刻高精度計數器的實際值
[DllImport("Kernel32.dll")]
private static extern bool QueryPerformanceCounter(out long lpPerformanceCount);
//引用Win32 API 中的 QueryPerformanceFrequency() 方法
//該方法返回高精度計數器每秒的計數值
[DllImport("Kernel32.dll")]
private static extern bool QueryPerformanceFrequency(out long lpFrequency);
public static void Main(string[] args)
{
long startTime, endTime;
long freq;
if (QueryPerformanceFrequency(out freq) == false)
{
//不支持高性能計時器
throw new Win32Exception();
}
Thread.Sleep(0); //讓等待線程工作,此例為單線程,可省略
QueryPerformanceCounter(out startTime); //記錄開始時間,精度為1ms
for (int i=0;i<10000;i++)
{
for (int j = 0; j < 10000; j++)
{
int temp = 0;
}
}
QueryPerformanceCounter(out endTime); //記錄結束時間,精度為1ms
Console.WriteLine((double) (endTime - startTime)*1000/freq+"ms");
Console.ReadKey();
}
}
//Result:
//412.58911914026ms
//結果根據個人電腦的性能而有所差別