Visual Basicissa aikaa mitataan yleisimmin Timer-komennolla (tai GetTickCount WinApista). WinApista löytyy kuitenkin vielä paljon tarkempi funktio nimittäin QueryPerformanceCounter. Funktio palauttaa 64-bittisen muuttujan tyyppiä LARGE_INTEGER, josta kiinnostaa lähinnä lowpart-osa. Tässä on esimerkki funktion käytöstä.
Private Declare Function QueryPerformanceCounter Lib "kernel32" (lpPerformanceCount As LARGE_INTEGER) As Long Private Type LARGE_INTEGER lowpart As Long highpart As Long End Type Private Sub Form_Click() Dim x As LARGE_INTEGER, z As Long, aa As Long z = QueryPerformanceCounter(x) aa = x.lowpart Do z = QueryPerformanceCounter(x) Caption = "Aikaa kulunut: " & x.lowpart - aa DoEvents Loop End Sub Private Sub Form_Load() AutoRedraw = True Print "Paina Formia!" End Sub
Ihan hyödyllinen... Tolleehan voi tehä ajanottokellonki ;)
onks toi joku sadasosa tai tuhannesosa vai miljoonasosa sekast?
tarkistin: miljoonasosa mut miten ton saa pysäytettyy?
lainaus:
tarkistin: miljoonasosa mut miten ton saa pysäytettyy?
Veikkaisin, että liittyy jotenkin Exit Sub/Function -käskyyn...
Tuon QueryPerformanceCounter-funktion taajuus on 3.19MHz ja sen tarkkuus on pienempi kuin 1/1000000s
Tuota voisi vaikka verrata GetTickCount-funktioon, jonka tarkkuus on 1/1000s
Tää on ihan *****!!!
Ajastimen taajuus pitäisi selvittää funktiolla QueryPerformanceFrequency. Muuten vinkissä laskettu erotus on aivan merkityksetön.
Aihe on jo aika vanha, joten et voi enää vastata siihen.