Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6 ajan mittaaminen

jaanas [28.01.2009 10:24:35]

#

Hei,
miten mittaan ohjelman suoritusajan ?

setä [28.01.2009 10:36:22]

#

Jos aika on sekunteja, helpoin tapa on käyttää Timer-funktiota. Määrittele muuttuja aika single-tyyppiseksi. Lisää ohjelman alkuun käsky:

aika = Timer

ja loppuun

aika = Timer - aika
MsgBox "Ohjelman aika oli " & Format(aika, "0.00" & " s."

On terkempiakin tapoja jos tarvitset.

Antti Laaksonen [28.01.2009 10:38:22]

#

Yksinkertainen tapa on käyttää funktiota Timer, joka palauttaa sekuntien määrän keskiyöstä.

' tässä säilytetään aikaa, jolloin mittaus alkoi
Dim aika As Double

Private Sub Form_Load()
    ' tämä laitetaan kohtaan, jossa ajan mittaus alkaa
    aika = Timer
End Sub

Private Sub Form_Unload(Cancel As Integer)
    ' tämä laitetaan kohtaan, jossa ajan mittaus päättyy
    MsgBox "Ohjelma oli käynnissä " & Round(Timer - aika, 2) & " s"
End Sub

Tarkempaan tulokseen pääsee funktioilla timeGetTime ja QueryPerformanceCounter.

jaanas [28.01.2009 10:39:47]

#

Kiitos, kokeilen tuota .

Merri [29.01.2009 00:23:39]

#

timings.bas

Option Explicit

Private Declare Function QueryPerformanceCounter Lib "kernel32" (X As Currency) As Boolean
Private Declare Function QueryPerformanceFrequency Lib "kernel32" (X As Currency) As Boolean

Dim m_Time As Double
Dim m_TimeFreq As Double
Dim m_TimeStart As Currency

Public Property Get Timing() As Double
    Dim curTime As Currency
    QueryPerformanceCounter curTime
    Timing = (curTime - m_TimeStart) * m_TimeFreq + m_Time
End Property

Public Property Let Timing(ByVal NewValue As Double)
    Dim curFreq As Currency, curOverhead As Currency
    m_Time = NewValue
    QueryPerformanceFrequency curFreq
    m_TimeFreq = 1 / curFreq
    QueryPerformanceCounter curOverhead
    QueryPerformanceCounter m_TimeStart
    m_TimeStart = m_TimeStart + (m_TimeStart - curOverhead)
End Property

Alustaminen / nollaus:
Timing = 0

Käyttö:
MsgBox Format$(Timing, "0.000000") & " millisekuntia"

Käyttämällä Timing * 1000 saa ajan sekunteina. Format on hyödyllinen ettei tule luettavuutta haittaavia pyöristyksiä (lukuE-jotain tai lukuE+jotain).

Vastaus

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

Tietoa sivustosta