Hei,
miten mittaan ohjelman suoritusajan ?
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.
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 SubTarkempaan tulokseen pääsee funktioilla timeGetTime ja QueryPerformanceCounter.
Kiitos, kokeilen tuota .
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 PropertyAlustaminen / 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).
Aihe on jo aika vanha, joten et voi enää vastata siihen.