Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Berechnungsdauer einer UDF messen

Forumthread: Berechnungsdauer einer UDF messen

Berechnungsdauer einer UDF messen
02.01.2008 20:58:00
{Boris}
Hi Leute,
wie kann man die Berechnungsdauer einer UDF messen, z.B. für folgendes Dummy-Beispiel:
Function Dummy() As Long Dim x As Long For x = 1 To 200000000 Next Dummy = 1 End Function


Tabelle1

 A
11

Formeln der Tabelle
ZelleFormel
A1=dummy()


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Wie lange hat der Rechner nun gerödelt?
Grüße Boris

Anzeige

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Berechnungsdauer einer UDF messen
02.01.2008 21:08:16
K.Rola
Hallo,
glückliches Jahr 2008, Liebes.

Function Dummy() As Long
Dim x As Long, Start As Long
Start = Timer
For x = 1 To 200000000
Next
Dummy = 1
MsgBox Timer - Start
End Function


Gruß K.Rola

AW: Berechnungsdauer einer UDF messen
02.01.2008 21:13:02
{Boris}
Hi Hasi,
ebenfalls ein frohes Neues!
Bei diesem Dummy war das gut messbar - verkürze ich die Schleife auf 200, dann kommt ein negatives(?!) Ergebnis raus. Wie geht denn das zusammen?
G+K
Boris

Anzeige
AW: Berechnungsdauer einer UDF messen
02.01.2008 21:37:50
K.Rola
Hallo,
Private Declare

Function GetTickCount& Lib "Kernel32" ()


Function Dummy() As Long
Dim x As Long, tc As Long
tc = GetTickCount
For x = 1 To 200000000
Next
Dummy = 1
MsgBox GetTickCount - tc
End Function


Wenn du es noch geanuer brauchst, steigt der Aufwand gleich mächtig, ist aber machbar.
Gruß K.Rola

Anzeige
AW: Berechnungsdauer einer UDF messen
02.01.2008 21:47:20
{Boris}
Liebes,
nochmals besten Dank!
Wenn du es noch geanuer brauchst, steigt der Aufwand gleich mächtig, ist aber machbar.
An Deinen pfiffigen Lösungen bin ich natürlich immer interessiert. :-)
Das mach ich aber mal von Deiner Zeit und Lust, ganz nach Deinem Ausspruch
Wenn man gerade nichts Besseres vorhat...
abhängig ;-)
Grüße Boris

Anzeige
AW: Berechnungsdauer einer UDF messen
02.01.2008 21:08:40
Hajo_Zi
Hallo Boris,
in Sekunden?

Option Explicit
Function Dummy() As Date
Dim DaZeit As Date
DaZeit = Time
Dim x As Long
For x = 1 To 200000000
Next
Dummy = Time - DaZeit
End Function



Anzeige
AW: Berechnungsdauer einer UDF messen
02.01.2008 21:16:10
{Boris}
Hi Hajo,
danke. In diesem Beispiel kann man sicherlich Sekunden messen. Es sollte aber auch im Bruchteilsbereich funktionieren.
Grüße Boris

AW: Berechnungsdauer einer UDF messen
02.01.2008 21:18:07
MichaV
Hallo Boris,


Option Explicit
Private Declare Function timeGetTime Lib "winmm.dll" () As Long
Private lngStartTime As Long
Public Sub StartTimer()
  lngStartTime = timeGetTime
End Sub
Public Function EndTimer() As Long
  EndTimer = timeGetTime - lngStartTime
End Function
Function Dummy() As Long
StartTimer
Dim x As Long
For x = 1 To 200000
Next
Dummy = 1
MsgBox EndTimer & " ms"
End Function


Gruß- Micha
PS: Rückmeldung wäre nett.
PPS: http://www.online-excel.de/fom/fo_read.php?f=1&bzh=10776&h=10770

Anzeige
AW: Berechnungsdauer einer UDF messen
02.01.2008 21:28:00
{Boris}
Hi Micha,
besten Dank. Bei kleiner Schleife zeigt´s zwar immer Null - aber ich brauch´s auch nur für etwas umfangreichere UDFs. Und scheint Dein Vorschlag sehr gut zu sein!
Grüße Boris

AW: Berechnungsdauer einer UDF messen
02.01.2008 21:36:00
MichaV
Hallo Boris,
zu K.Rolas Variante (ich wollte mich oben nicht in Eurer kuscheliges Gespräch einmischen): da kommt die Ungenauigkeit bei der Zuweisung zum Long- Datentyp zum Vorschein. Versuch(t) mal


Option Explicit
Function Dummy() As Long
Dim x As Long, Start As Long, Ende As Long
Start = Timer
For x = 1 To 200
Next
Dummy = 1
Ende = Timer
MsgBox Ende - Start
End Function


..allerdings gibts hier um Mitternacht Probleme, weil Timer dann auf 0 zurückspringt. Bei der API- Variante gibts nur alle 48 Tage Probleme.
Gruß- Micha

Anzeige
AW: Berechnungsdauer einer UDF messen
02.01.2008 21:43:00
{Boris}
Hi Micha,
nochmals danke. Aber hier hast Du - glaube ich - wahrscheinlich falsch reinkopiert. Die Variablen sollten wohl alle vom Typ Double sein ;-). Hab´s zumindest so getestet - und funktioniert.
Grüße Boris

AW: Berechnungsdauer einer UDF messen
02.01.2008 21:57:00
MichaV
Hallo Boris,
die Timer- Funktionen geben Long zurück. Warum soll ich dann alles als Double deklarieren?
Gruß- Micha

Anzeige
Dann hab ich Dich falsch verstanden...
02.01.2008 22:07:00
{Boris}
Hi Micha,
...da kommt die Ungenauigkeit bei der Zuweisung zum Long- Datentyp zum Vorschein...
Sei´s drum - et lüppt!
Grüße Boris

AW: Dann hab ich Dich falsch verstanden...
02.01.2008 22:15:00
MichaV
Hallo,
ich hab mich auch gewundert. Timer gibt den Daten vom Typ Single zurück, und das wird in diesem Beispielcode in eine Long- Variable umgewandelt.
Es hätte also gereicht:
...
Dim x As Long, Start As Single
Start = Timer
...
Hatte ich nicht gesehen, und nun wieder was gelernt.
So, und nun wirklich Schluß.
Gruß- Micha

Anzeige
AW: Berechnungsdauer einer UDF messen
02.01.2008 22:13:49
Uduuh
Hallo Micha,
aus der Hilfe:

Timer-Funktion
Gibt einen Wert vom Typ Single zurück, der die Anzahl der seit Mitternacht vergangenen Sekunden  _
angibt.
Syntax
Timer
Bemerkungen
Unter Microsoft Windows gibt die Timer-Funktion Bruchteile einer Sekunde zurück. Auf dem Macintosh ist die Einheit eine Sekunde.


Gruß aus’m Pott
Udo

Anzeige
02.01.2008 22:17:00
MichaV
Hallo Udo,
ja danke :o) Irgendwie hatte ich das auch gerade in der Hilfe gelesen...
Gruß- Micha

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige