Zeitmessung mit dem Hardwaretimer

// Es wird die Zeit in Sekunden zwischen zwei Timeraufrufen
// (Timerstart-Zeit und Timerstop-Zeit) gemessen: 

void __fastcall TMain::Button1Click(TObject *Sender)
{
    LARGE_INTEGER Frequency, TimerStart, TimerStop;
    __int64 Latency;
    double Usedtime;
    int Digits = 12; // 12 Nachkommastellen

    // erst die Latzenzzeit des Counters berechnen:
    QueryPerformanceFrequency(&Frequency);
    QueryPerformanceCounter(&TimerStart);
    QueryPerformanceCounter(&TimerStop);
    Latency = TimerStop.QuadPart - TimerStart.QuadPart;

    QueryPerformanceCounter(&TimerStart);

    irgendwas(); // Code für den die Zeit gemessen werden soll

    QueryPerformanceCounter(&TimerStop);
    Usedtime = (((double)TimerStop.QuadPart - (double)TimerStart.QuadPart) - (double)Latency) / (double)Frequency.QuadPart;
    Label1->Caption = FloatToStrF(Usedtime, ffFixed, 16, Digits) + " s";
}