
Presnosť merania času vo Windows a Linuxe
S akou najvyššou presnosťou sa dá merať čas v týchto systémoch?
- Windows XP
- Windows Vista
- Windows 7
- Windows 8
- Linux (*buntu) - ak sa nemýlim, je jedno, o akú distribúciu Linuxu sa jedná
Ide mi o to, že vo Windows sa síce dá merať čas v milisekundách, ale s presnosťou na 1/60 (?) sekundy. Lenže problém je, že niekde som čítal, že tento interval je pri rôznych Windows rôzny a tiež je iný aj pri Linuxe.
Okrem toho by ma zaujímalo, či je vôbec možné merať vo Windows a v Linuxe čas s vyššou presnosťou než tieto intervaly.
Nevím co vlastně máte na mysli, ale:
Není.
No super, tak teraz sa tu budeme doťahovať, čo je operačný systém a čo je distribúcia, pravda? Každý, kto vie na čo sa pýtam nebude vyťahovať takéto veci a odpovie mi na otázku rovno.
Mimochodom, bolo to myslené z hľadiska mojej otázky a nie z hľadiska toho, či je Linux Ubuntu alebo Kubuntu. Takže pre tých, čo potrebujú kopnúť formulujem inak:
- Linux (*buntu) - ak sa nemýlim, je jedno, o akú distribúciu Linuxu sa jedná z hľadiska merania času
Ano dá. Používají se na to specializované multimediální timery. (ve W)
Ale čo potom v Linuxe? Jedná sa mi o použitie v Lazarovi. Je v ňom niečo také priamo obsiahnuté?
Pod linuxem jsem ještě neprogramoval, takže poradit můžu jen omezeně.
Multimediální timery se dokáží dostat na mnohem větší přesnost, než "klasické".
Používají se u her a v linuxu hry taky existují, takže nějaká možnost tam bude.
Lazar neznám
lazarus.freepascal.org
Vo Win asi najpresnejsia vseobecne je Gettickcount (to je tych 10ms alebo 16ms presnost).
Presnejsie metody pouzivaju HW, napr. ACPI counter apod, ale na to by si potreboval driver (ptz musis ist na HW I/O space), a musis sa dostat na ACPI tabulky alebo co ja viem jak ziskas I/O adresu ACPI countera. Ak ju ziskas a ak mozes ist na I/O tak mas presnost ca. 0.3us
Ako tak čítam čo píšeš, asi najvhodnejšie pre moje potreby bude ozaj GetTickCount. Lenže aká je tá presnosť naprieč Windowami a Linuxom? Niekde som tuším čítal, že nejaké staršie Windowsy majú 18,2x za sekundu úpravu času a novšie (tuším od Win95 alebo WinXP) cca 60x za sekundu. Linux, ten má iný interval, len sa neviem dopátrať k tomu aký. V podstate mi nerobí problém si to v Linuxe zistiť, lenže ten mi nejako blbne a odmieta sa mi pripojiť na wifi, takže nemôžem nainštalovať Lazarus atď.
A ak ma tvoj PC HPET, tak existuju aj presnejsie metody, ale zhlavy neviem jake su na to WinAPI fcie, hladaj slova HPET WinAPI. Ale nie kazdy PC ma HPET (moze byt aj disablnuty v BIOSe)
.. tym hladanim HPET WinAPI asi najdes multimedia timer fcie, ako uz sa pisalo vyssie
http://msdn.microsoft.com/en-us/library/windows/de sktop/dd743611%28v=vs.85%29.aspx
zacinas s timeGetDevCaps, ptz na kazdom HW moze byt ine minimalne podporovane rozlisenie