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 SubIhan 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.