Zeitmessbefehl

sra

Erfahrenes Mitglied
Hallo

Kennt jemand von euch einen Befehl, um die Zeit zu messen, welche das System für einen Durchlauf (zB einer Schleife) hat. Das ganze sollte so genau wie möglich sein, da sich daraus quasi die Geschwindigkeit eines Elementes definiert.

Danke
 
System.DateTime.Now
Now bietet noch verschiedenen Konvertierungsfunktionen die du ggf. verwenden kannst. Im Prinzip würd ich einfach vor der Schleife einmal den aktuellen Wert von System.DateTime.Now in einer variablen speichern und nach der Schleife den aktuellen Wert von "Now" in einer anderen. Dann ziehst du die erste von der zweiten ab und erhälst einen positiven Time-Wert, der der verstrichenen Zeit entspricht.

Gruss
Christian
 
Was hat denn die Subtraktion eines Datums von einem anderen damit zu tun, daß die Zeit nicht dem Dezimalsystem unterliegt ?
Daran werden die C#-Entwickler schon gedacht haben, als sie die Möglichkeit eröffnet haben ein Datum von einem anderen abzuziehen ... hoffe ich zumindest. :)

Für Zeitmessungen würde ich die TickCount-Eigenschaft nehmen wenns nicht allzu genau sein soll:

http://msdn.microsoft.com/library/d...f/html/frlrfsystemdatetimeclasstickstopic.asp

Ansonsten bringt es wenig, einfach zwei DateTimes voneinander abzuziehen. Viel mehr solltest du dann DateTime.Ticks verwenden, das ist nämlich sehr genau:

http://msdn.microsoft.com/library/d...f/html/frlrfsystemdatetimeclasstickstopic.asp
 
Code:
DateTime StartTime=DateTime.Now;
//Tue irgendwas langes, z.B.:
Thread.Sleep(5000);
TimeSpan Duration = DateTime.Now - StartTime;
Und dann kannste mit Duration.Seconds,Hours,Minutes etc. die Werte abrufen.
Viel Spass damit!
 
Ok - darauf hätte ich noch fast selber kommen sollen :D

Ticks sind milisekunden (?) oder ist das etwas ganz eigenes?
 
das kannst du dem timer über die eigenschaft timer.interval zuweisen wie du willst:
ob in 1/1000 sec oder 1 sec schritten ist dir überlassen
habs zwar noch nicht ausprobiert, aber es müssten auch 5 sec schritte möglich sein
 
1 Tick = 100 Nanosekunden
1000 Nanosekunden = 1 Mikrosekunde
1000 Mikrosekunden = 1 Millisekunde

Um mich auf das Beispiel von oben zu beziehen wäre das also:

long lStartzeit = DateTime.Now.Ticks;
Sleep(5000);
long lDifferenz = DateTime.Now.Ticks - lStartzeit;

Allerdings glaube ich nicht, daß die Nanosekunden vom Rechner wirklich ermittelbar sind. Wie das gemacht wird, wäre mal interessant zu erfahren.
Aber genauer als Nanosekunden gehts kaum. ;-)
 
Ich finde dasmit der TImeSpan aber wesentlich eleganter, da man es meist nicht so genau braucht und dort den Vorteil hat, direkt auf Stunden, Minuten und Sekunden zugreifen zu können.
Aber jeder sollte selber wissen, welche MEthode für ihn die beste ist.
 

Neue Beiträge

Zurück