Zeitmessung mit _ftime

Schnelle objektorientierte, kompilierende Programmiersprache.
nufan
Wiki-Moderator
Beiträge: 2558
Registriert: Sa Jul 05, 2008 3:21 pm

Zeitmessung mit _ftime

Beitrag von nufan » Mi Sep 24, 2008 3:46 pm

Hallo!
Kann mir bitte jemand sagen, wie man mit (_)ftime die dauer des Kompiliervorganges berechnen und danach ausgeben kann? Damit will ich sehen, welches Programm "schneller" ist. Ich hab schon ewig gegoogelt und das war das beste, was ich finden konnte: http://www.warpspeed.com.au/cgi-bin/inf ... EF.INF+141
Jedoch bekomm ich so lediglich die aktuelle Zeit. Möglichst viele Nachkommastellen wären halt auch toll... Borland gibt bei meinem Miniprogramm nämlich nur 0.020 s an.

nufan
Wiki-Moderator
Beiträge: 2558
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Kompilierzeit mit _ftime

Beitrag von nufan » Mi Sep 24, 2008 4:47 pm

Idee!
Ich könnte am Beginn des Progs "millitm" auslesen und am Ende auch und dann einfach subtrahieren. Mal ausprobiern :)
Aber das wär dann doch nicht ganz der gewünschte Effekt...

Benutzeravatar
Kerli
Beiträge: 1456
Registriert: So Jul 06, 2008 10:17 am
Wohnort: Österreich
Kontaktdaten:

Re: Kompilierzeit mit _ftime

Beitrag von Kerli » Mi Sep 24, 2008 4:50 pm

nufan hat geschrieben:Kann mir bitte jemand sagen, wie man mit (_)ftime die dauer des Kompiliervorganges berechnen und danach ausgeben kann?
Was ich gesehen hab ist (_)ftime eine Funktion aus einer C-Bibliothek und wir deshalb auch erst zur Programmlaufzeit aufgerufen und nicht während dem kompilieren.
Die benötigte Zeit zum kompilieren tun eigentlich die meisten IDEs sowieso anzeigen, da sollte es also kein Problem geben.
Aber wozu willst du das so genau wissen? Es ist doch nicht wichtig wie schnell ein Kompiler bei kleinen Programmen ist, sondern erst bei größeren Programmen, und wenn man da selber kaum einen Unterschied in der benötigten Zeit zum Kompilieren des gleichen Codes bemerkt, dann ist es doch egal welchen man nimmt, da es ja nicht auf Mikrosekunden ankommt.
nufan hat geschrieben:Idee!
Ich könnte am Beginn des Progs "millitm" auslesen und am Ende auch und dann einfach subtrahieren. Mal ausprobiern :)
Auch hier das gleiche Problem wie oben. Es werden keine Funktionen zur Kompilierzeit aufgerufen.
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)

OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at

nufan
Wiki-Moderator
Beiträge: 2558
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Kompilierzeit mit _ftime

Beitrag von nufan » Mi Sep 24, 2008 4:54 pm

Kerli hat geschrieben:Aber wozu willst du das so genau wissen? Es ist doch nicht wichtig wie schnell ein Kompiler bei kleinen Programmen ist, sondern erst bei größeren Programmen, und wenn man da selber kaum einen Unterschied in der benötigten Zeit zum Kompilieren des gleichen Codes bemerkt, dann ist es doch egal welchen man nimmt, da es ja nicht auf Mikrosekunden ankommt.
Es soll zeigen, dass Pointer "schneller" sind als das Feld per Index zu übergeben. Kompilierzeit... wohl schlecht ausgedrückt. Wohl eher die Laufzeit des Programmes.

Benutzeravatar
Kerli
Beiträge: 1456
Registriert: So Jul 06, 2008 10:17 am
Wohnort: Österreich
Kontaktdaten:

Re: Kompilierzeit mit _ftime

Beitrag von Kerli » Mi Sep 24, 2008 4:58 pm

nufan hat geschrieben:
Kerli hat geschrieben:Aber wozu willst du das so genau wissen? Es ist doch nicht wichtig wie schnell ein Kompiler bei kleinen Programmen ist, sondern erst bei größeren Programmen, und wenn man da selber kaum einen Unterschied in der benötigten Zeit zum Kompilieren des gleichen Codes bemerkt, dann ist es doch egal welchen man nimmt, da es ja nicht auf Mikrosekunden ankommt.
Es soll zeigen, dass Pointer "schneller" sind als das Feld per Index zu übergeben. Kompilierzeit... wohl schlecht ausgedrückt. Wohl eher die Laufzeit des Programmes.
Aso. Dann ist es ja klar :D

Was für ein Betriebssystem verwendest du denn?
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)

OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at

nufan
Wiki-Moderator
Beiträge: 2558
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Kompilierzeit mit _ftime

Beitrag von nufan » Mi Sep 24, 2008 5:01 pm

Kerli hat geschrieben:Was für ein Betriebssystem verwendest du denn?
Windows Vista. Ist das wichtig. Es _soll_ die Funktion _ftime verwendet werden...

nufan
Wiki-Moderator
Beiträge: 2558
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Kompilierzeit mit _ftime

Beitrag von nufan » Mi Sep 24, 2008 5:02 pm

Kerli hat geschrieben:Was für ein Betriebssystem verwendest du denn?
Windows Vista. Ist das wichtig? Es _soll_ die Funktion _ftime verwendet werden...

Lg

EDIT: Kannst ja bitte gleich den Namen auf "Laufzeit eines Programms mit _ftime" oder so setzten ;)

Benutzeravatar
Kerli
Beiträge: 1456
Registriert: So Jul 06, 2008 10:17 am
Wohnort: Österreich
Kontaktdaten:

Re: Kompilierzeit mit _ftime

Beitrag von Kerli » Mi Sep 24, 2008 5:17 pm

nufan hat geschrieben:
Kerli hat geschrieben:Was für ein Betriebssystem verwendest du denn?
Windows Vista. Ist das wichtig. Es _soll_ die Funktion _ftime verwendet werden...
Weshalb _soll_ es _ftime sein? Ich hab - zumindest unter XP - recht gut Erfahrungen mit dem Performancecounter gemacht.

Code: Alles auswählen

#include <windows.h>

// ...

//Performancecounter initialisieren

LONGLONG llFrequency;

if(!QueryPerformanceFrequency((LARGE_INTEGER*)(&llFrequency)))

{

	MessageBox(NULL, "Performancecounter nicht vorhanden.", "Fehler", MB_OK|MB_ICONEXCLAMATION); 

}



LONGLONG	llStartTime;	// Startzeitpunkt

LONGLONG	llEndTime;		// Endzeitpunkt

double dFrameTime = 0.f;

// Startzeitpunkt messen

QueryPerformanceCounter((LARGE_INTEGER*)(&llStartTime));

// Endzeitpunkt messen und Anzahl der vergangenen Sekunden berechnen

QueryPerformanceCounter((LARGE_INTEGER*)(&llEndTime));				

dFrameTime = (double)(llEndTime - llStartTime) / llFrequency;
Den Code hab ich noch in einem alten Programm aus Windowszeiten von mir gefunden...
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)

OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at

nufan
Wiki-Moderator
Beiträge: 2558
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Kompilierzeit mit _ftime

Beitrag von nufan » Mi Sep 24, 2008 5:21 pm

Kerli hat geschrieben:Weshalb _soll_ es _ftime sein?
Weil es Teil der Angabe zum Beispiel ist.
Ich habs jetzt mit ms-Subtrahieren versucht, da kommt immer 0 raus...

Ich muss überprüfen, ob ein Selectsort mit Feldindex oder einer mit Pointer schneller ist.
Natürlich weiß ich das Ergebnis schon, aber am Weg zur Lösung hakts...

Benutzeravatar
Kerli
Beiträge: 1456
Registriert: So Jul 06, 2008 10:17 am
Wohnort: Österreich
Kontaktdaten:

Re: Kompilierzeit mit _ftime

Beitrag von Kerli » Mi Sep 24, 2008 5:46 pm

nufan hat geschrieben:
Kerli hat geschrieben:Weshalb _soll_ es _ftime sein?
Weil es Teil der Angabe zum Beispiel ist.
Das könnte ein Grund sein ;)
nufan hat geschrieben: Ich habs jetzt mit ms-Subtrahieren versucht, da kommt immer 0 raus...
Ist die Differenz vielleicht so klein, dass es keinen Unterschied in dieser Größe gibt? ms sind für ein Konsolenprogramm schon eine sehr große Einheit. Vielleicht solltest du einmal schauen was sich ändert wenn du deine Abfrage öfters durchführst und diese Zeit stoppst.
Du darfst dabei halt nicht auf die Sekunden vergessen, falls es zu lang wird...
"Make it idiot-proof and someone will invent an even better idiot." (programmers wisdom)

OpenGL Tutorials und vieles mehr rund ums Programmieren: http://www.tomprogs.at

Antworten