Anzeige
Archiv - Navigation
684to688
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
684to688
684to688
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Geschwindigkeit eines Makros messen?

Geschwindigkeit eines Makros messen?
24.10.2005 11:36:23
Peter
Hallo zusammen,
ist es mit relativ einfachen Mitteln möglich die Geschwindigkeit eines Makros festzustellen? Ich stelle mir das so vor dass beim Start des Makros ein Timer irgendwie gesetzt wird und nachdem das Makro durchgelaufen ist (aber noch vor End Sub) die benötigte Zeit per "Application.StatusBar = Die Ausführung hat xx sek" dargestellt wird. Hat jemand ne Ahnung wie das geht?
Danke und Gruß
Peter

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Geschwindigkeit eines Makros messen?
24.10.2005 11:44:29
MichaV
Hallo,
mit Bordmitteln geht es nur, wenn das Makro nicht über Mitternacht läuft. Dann setzt sich Timer nämlich auf 0 zurück.
Option Explicit

Sub Test2()
Dim i As Integer
Dim t As Single
Dim s
t = Timer
For i = 1 To 10000
s = "bla"
Next i
Application.StatusBar = "Makrozeit: " & (Timer - t) * 1000 & " ms"
End Sub

Gruss- Micha
PS: Rückmeldung wäre nett.
AW: Geschwindigkeit eines Makros messen?
24.10.2005 11:54:46
GraFri
Hallo
Mit Klasenmodul in Millisekunden.


      
'------------------- Anfang Code Zeitmessung  --------------------
'Aufruf zum Starten und Stoppen sowie Ausgabe in MSG-Box

Option Explicit
Dim s       As Single
Dim l       As Long
Dim xtime   As New xTimer
Sub Zeit_starten()
  xtime.Calibrieren
  xtime.Start
End Sub
Sub Zeit_stoppen()
  xtime.Halt
  ShowTime
End Sub
Private Sub ShowTime()
  MsgBox "Zeitmessung: " & Format(xtime.RunTime, "0.00 ms")
End Sub
'-------------------- Ende Code Zeitmessung  ---------------------

'------------------- Anfang Code xTimer  --------------------
'Dem Klassenmodul den Namen "xTimer" zuweisen

Option Explicit
Private Declare Function QueryPerformanceCounter Lib "kernel32" _
       (lpPerformanceCount 
As LARGE_INTEGER) As Long
                    
Private Declare Function QueryPerformanceFrequency Lib "kernel32" _
        (lpFrequency 
As LARGE_INTEGER) As Long
Private Type LARGE_INTEGER
  Lo 
As Long
  Hi 
As Long
End Type
Dim Strt        As LARGE_INTEGER
Dim Ende        As LARGE_INTEGER
Dim Freq        As LARGE_INTEGER
Dim Calibr      As Double
Private Sub Class_Initialize()
  
Call QueryPerformanceFrequency(Freq)
End Sub
Public Sub Calibrieren()
  
Call QueryPerformanceCounter(Strt)
  
Call QueryPerformanceCounter(Ende)
  Calibr = (D(Ende) - D(Strt)) / D(Freq) * 1000 
'ms
End Sub
Public Sub Start()
  
Call QueryPerformanceCounter(Strt)
End Sub
Public Sub Halt()
  
Call QueryPerformanceCounter(Ende)
End Sub
Public Property Get RunTime() As Variant  'ms
  RunTime = (D(Ende) - D(Strt)) / D(Freq) * 1000 - Calibr
End Property
Private Function D(x As LARGE_INTEGER) As Double
  
Dim l As Double, h As Double
    l = x.Lo
    h = x.Hi
    
If l < 0 Then l = 4294967296# + l + 1
    
If h < 0 Then h = 4294967296# + h + 1
    D = l + h * 4294967296#
End Function
'-------------------- Ende Code xTimer  --------------------- 


Bei weiteren Fragen einfach melden.
mfg, GraFri
Anzeige
AW: Geschwindigkeit eines Makros messen?
24.10.2005 11:55:12
Peter
Hallo Micha,
das funktioniert ja perfekt! Und über Mitternacht werde ich diese Funktion nicht brauchen... ;-)
Danke dir also vielmals für deine Lösung!!
Gruß
Peter
AW: Geschwindigkeit eines Makros messen?
24.10.2005 12:05:26
MichaV
Hallo Peter,
danke für Deine Rückmeldung.
Dank GraFri hab ich noch einen kleinen Fehler entdeckt: Die Timer- Zeit wird auf Win- Rechnern bereits in ms gemessen, Du musst die also nicht mit 1000 multiplizieren.
Gruss- Micha
AW: Geschwindigkeit eines Makros messen?
24.10.2005 12:10:58
Peter
Hallo GraFri,
danke auch für deine Profilösung. Für die Zukunft kann ich das sicher mal noch brauchen!
Hallo Micha,
hab den Fehler nun auch ausgemerzt. Nun ist alles perfekt! :)
Gruß
Peter
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige