Rutiinsete lauaarvuti andmebaasirakenduste jaoks muudab ühe sekundi lisamine ülesande täitmisajale lõppkasutajatele harva vahet - kuid kui peate töötlema miljoneid puulehti või genereerima miljardeid kordumatuid juhuslikke numbreid, muutub täitmise kiirus olulisemaks.
Teie koodi aegumine
Mõnes rakenduses on väga täpsed ja ülitäpse aja mõõtmise meetodid olulised ja õnneks Delphi pakub nende aegade kvalifitseerimiseks suure jõudlusega loendurit.
RTL-ide kasutamine Nüüd Funktsioon
Üks võimalus kasutab Nüüd funktsiooni. Nüüd, mis on määratletud SysUtils ühik, tagastab praeguse süsteemi kuupäeva ja kellaaja.
Mõni protsess "käivituse" ja "seiskamise" vahel kulus paaril koodimõõdul:
Funktsioon Nüüd tagastab praeguse süsteemi kuupäeva ja kellaaja täpsusega kuni 10 millisekundit (Windows NT ja uuemad) või 55 millisekundit (Windows 98).
Väga väikeste intervallide korral ei piisa "Nüüd" täpsusest mõnikord.
Windows API GetTickCount kasutamine
Veelgi täpsemate andmete saamiseks kasutage nuppu GetTickCount
Windowsi API funktsiooni. GetTickCount hangib süsteemi käivitamisest möödunud millisekundite arvu, kuid ainult funktsioonil on täpsusega 1 ms ja see ei pruugi alati olla täpne, kui arvuti on pikka aega sisselülitatud aeg.Kulunud aeg salvestatakse DWORD (32-bitise) väärtusena. Seetõttu väheneb aeg nullini, kui Windowsi töödeldakse pidevalt 49,7 päeva.
GetTickCount on piiratud ka süsteemi taimeri täpsusega (10/55 ms).
Teie koodi ülitäpne ajastus
Kui teie arvuti toetab suure eraldusvõimega loendurit, kasutage nuppu QueryPerformanceFrequency Windowsi API funktsioon sageduse väljendamiseks sekundites. Loendamise väärtus sõltub protsessorist.
QueryPerformanceCounter funktsioon hangib suure eraldusvõimega jõudlusloenduri praeguse väärtuse. Selle funktsiooni kutsumisega koodilõigu alguses ja lõpus kasutab rakendus loendurit suure eraldusvõimega taimerina.
Kõrge eraldusvõimega taimerite täpsus on paarsada nanosekundit. Nanosekund on ajaühik, mis tähistab 0,000000001 sekundit - või 1 miljard sekundit.
TStopWatch: kõrglahutusega loenduri Delphi juurutamine
Noogutades .Netnimetamise tavade vastu meeldib loendur TStopWatch pakub täpse aja mõõtmise jaoks suure eraldusvõimega Delphi lahendust.
TStopWatch mõõdab möödunud aega, lugedes taimeripunkte aluseks olevasse taimerimehhanismi.
- IsHighResolution atribuut näitab, kas taimer põhineb suure eraldusvõimega jõudlusloenduril.
- Alusta meetod alustab möödunud aja mõõtmist.
- Peatu meetod peatab möödunud aja mõõtmise.
- KulunudMillisekundit vara saab kogu kulunud aja millisekundites.
- Kulunud vara saab kogu kulunud aja taimeripuukidena.
Siin on kasutamise näide: