För rutinmässiga skrivbordsdatabasapplikationer är det sällan en skillnad för slutanvändarna att lägga till en enda sekund till en uppgifts exekveringstid - men när du behöver bearbeta miljontals trädblad eller generera miljarder unika slumpmässiga nummer blir utföringshastigheten viktigare.
I vissa applikationer är mycket noggranna mätmetoder med hög precision tid viktiga och lyckligtvis tillhandahåller Delphi en högpresterande räknare för att kvalificera dessa tider.
Ett alternativ använder nu-funktionen. Nu, definierad i SysUtils enhet, returnerar det aktuella systemdatumet och tiden.
Några koderader räknade tiden mellan "start" och "stopp" för någon process:
Nu-funktionen returnerar det aktuella systemdatumet och tiden som är exakt upp till 10 millisekunder (Windows NT och senare) eller 55 millisekunder (Windows 98).
För mycket små intervall räcker det ibland inte med noggrannhet.
För ännu mer exakta data, använd GetTickCount Windows API-funktion. GetTickCount hämtar antalet millisekunder som har gått sedan systemet startades, men funktionen har bara precisionen på 1 ms och kanske inte alltid är korrekt om datorn förblir påslagen under lång tid.
Den förflutna tiden lagras som ett DWORD-värde (32-bitars). Därför kommer tiden att sträcka sig till noll om Windows körs kontinuerligt under 49,7 dagar.
GetTickCount är också begränsad till systemtimerns noggrannhet (10/55 ms).
Om din PC stöder en högupplösningsprestandräknare, använd QueryPerformanceFrequency Windows API-funktion för att uttrycka frekvensen, i räkningar per sekund. Räknarnas värde är beroende av processor.
De QueryPerformanceCounter -funktionen hämtar det aktuella värdet på högupplösningsprestandräknaren. Genom att ringa denna funktion i början och slutet av ett kodavsnitt använder en applikation räknaren som en högupplöst timer.
Noggrannheten för högupplösta timers är cirka några hundra nanosekunder. Ett nanosekund är en tidsenhet som representerar 0,000000001 sekunder - eller 1 miljarddels sekund.
Med en nick till .Net namnge konventioner, en räknare som TStopWatch erbjuder en högupplöst Delphi-lösning för exakta tidsmätningar.
TStopWatch mäter förfluten tid genom att räkna timerfästingar i den underliggande timermekanismen.