Vysoko výkonný časovač v Delphi

Pre rutinné desktopové databázové aplikácie pridanie jednej sekundy k času vykonávania úlohy málokedy pre koncových používateľov rozdiel ak potrebujete spracovať milióny listov stromov alebo vygenerovať miliardy jedinečných náhodných čísel, rýchlosť vykonávania sa stáva dôležitejšou.

Časový limit vášho kódu

V niektorých aplikáciách sú veľmi presné a veľmi presné metódy merania času dôležité a našťastie Delphi poskytuje vysoko výkonné počítadlo na kvalifikáciu v týchto časoch.

Používanie RTL teraz funkcie

Jedna možnosť používa teraz Funkcie. teraz, definované v sysutils jednotka, vracia aktuálny systémový dátum a čas.

Niekoľko riadkov kódu meria uplynutý čas medzi „začiatkom“ a „zastavením“ nejakého procesu:

Funkcia Teraz vracia aktuálny systémový dátum a čas, ktorý je presný do 10 milisekúnd (Windows NT a novšie) alebo 55 milisekúnd (Windows 98).

Pre veľmi malé intervaly nie je presnosť „Now“ niekedy dostačujúca.

Používanie rozhrania Windows API GetTickCount

Pre ešte presnejšie údaje použite

instagram viewer
GetTickCountWindows API Funkcie. GetTickCount načíta počet milisekúnd, ktoré uplynuli od spustenia systému, ale funkcia má iba presnosť 1 ms a nemusí byť vždy presná, ak počítač zostane zapnutý dlhý čas Čas.

Uplynutý čas sa uloží ako hodnota DWORD (32-bit). Čas sa preto zalomí na nulu, ak je systém Windows spustený nepretržite 49,7 dní.

GetTickCount je tiež obmedzená na presnosť systémového časovača (10/55 ms).

Veľmi presné vypršanie platnosti vášho kódu

Ak váš počítač podporuje čítač výkonu s vysokým rozlíšením, použite QueryPerformanceFrequency Funkcia Windows API na vyjadrenie frekvencie v počtoch za sekundu. Hodnota počtu závisí od procesora.

QueryPerformanceCounter Funkcia načíta aktuálnu hodnotu počítadla výkonu s vysokým rozlíšením. Zavolaním tejto funkcie na začiatku a na konci časti kódu aplikácia použije počítadlo ako časovač s vysokým rozlíšením.

Presnosť časovačov s vysokým rozlíšením je približne niekoľko stoviek nanosekúnd. Nanosekunda je jednotka času, ktorá predstavuje 0,000000001 sekundy alebo 1 miliardtinu sekundy.

TStopWatch: Delphi Implementácia počítadla s vysokým rozlíšením

S kývnutím na. Net pomenovanie konvencie, pult ako TStopWatch ponúka riešenie Delphi s vysokým rozlíšením pre presné meranie času.

TStopWatch meria uplynutý čas počítaním časových kliešťov v základnom časovom mechanizme.

  • IsHighResolution Vlastnosť označuje, či je časovač založený na počítadle výkonnosti s vysokým rozlíšením.
  • štart metóda začína meranie uplynutého času.
  • Stop metóda zastaví meranie uplynutého času.
  • ElapsedMilliseconds Vlastnosť získa celkový uplynutý čas v milisekundách.
  • uplynulý Vlastnosť získa celkový uplynutý čas v začiarkavacích políčkach časovača.

Tu je príklad použitia:

instagram story viewer