Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: VB6: Tarkkaa ajanmittausta

Sivun loppuun

Antti Laaksonen [16.04.2002 18:27:49]

#

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

Monkkats [21.09.2003 22:56:28]

#

Ihan hyödyllinen... Tolleehan voi tehä ajanottokellonki ;)

miiro [21.11.2003 15:03:56]

#

onks toi joku sadasosa tai tuhannesosa vai miljoonasosa sekast?

miiro [21.11.2003 15:10:16]

#

tarkistin: miljoonasosa mut miten ton saa pysäytettyy?

Lumi-ukkeli [21.01.2005 22:02:56]

#

lainaus:

tarkistin: miljoonasosa mut miten ton saa pysäytettyy?

Veikkaisin, että liittyy jotenkin Exit Sub/Function -käskyyn...

Lumi-ukkeli [29.04.2005 17:40:37]

#

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

Ibe666 [08.04.2006 15:03:31]

#

Tää on ihan *****!!!

Metabolix [27.11.2011 01:02:18]

#

Ajastimen taajuus pitäisi selvittää funktiolla QueryPerformanceFrequency. Muuten vinkissä laskettu erotus on aivan merkityksetön.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta