Pentru aplicațiile de bază pentru baze de date desktop, adăugarea unei singure secunde la timpul de execuție al unei sarcini face rareori diferența pentru utilizatorii finali - dar atunci când trebuie să procesați milioane de frunze de arbore sau să generați miliarde de numere aleatorii unice, viteza de execuție devine mai importantă.
În unele aplicații, metodele de măsurare a timpului foarte precise și foarte precise sunt importante, iar din fericire Delphi oferă un contor de înaltă performanță pentru a se califica în aceste momente.
O opțiune utilizează funcția Acum. Acum, definit în SysUtils unitate, returnează data și ora actuală a sistemului.
Câteva linii de măsurare a codului au trecut timpul între „început” și „oprire” pentru un anumit proces:
Funcția Now returnează data și ora actuală a sistemului care sunt exacte până la 10 milisecunde (Windows NT și versiuni ulterioare) sau 55 milisecunde (Windows 98).
Pentru intervale foarte mici, precizia „Acum” nu este uneori suficientă.
Pentru date și mai precise, utilizați butonul GetTickCount Funcția API Windows. GetTickCount preia numărul de milisecunde care s-au scurs de la pornirea sistemului, însă funcția are doar precizia de 1 ms și este posibil să nu fie întotdeauna exactă dacă computerul rămâne alimentat timp îndelungat.
Timpul scurs este stocat ca valoare DWORD (32 biți). Prin urmare, timpul se va încheia până la zero dacă Windows este rulat continuu timp de 49,7 zile.
GetTickCount este limitată și la precizia cronometrului sistemului (10/55 ms).
Dacă computerul dvs. acceptă un contor de performanță de înaltă rezoluție, utilizați butonul QueryPerformanceFrequency Funcția API pentru Windows pentru a exprima frecvența, în număr de pe secundă. Valoarea numărului depinde de procesor.
QueryPerformanceCounter funcția preia valoarea curentă a contorului de performanță de înaltă rezoluție. Apelând această funcție la începutul și la sfârșitul unei secțiuni de cod, o aplicație folosește contorul ca cronometru de înaltă rezoluție.
Precizia cronometrelor de înaltă rezoluție este de aproximativ câteva sute de nanosecunde. O nanosecundă este o unitate de timp reprezentând 0,000000001 secunde - sau o miliardime de secundă.
Cu o încuviințare la convențiile de denumire .Net, un contor de genul TStopWatch oferă o soluție Delphi de înaltă rezoluție pentru măsurători precise ale timpului.
TStopWatch măsoară timpul scurs prin numărarea căpușelor de cronometru în mecanismul de cronometrare de bază.