Seite 1 von 4
Zeitmessung mit _ftime
Verfasst: Mi Sep 24, 2008 3:46 pm
von nufan
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.
Re: Kompilierzeit mit _ftime
Verfasst: Mi Sep 24, 2008 4:47 pm
von nufan
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...
Re: Kompilierzeit mit _ftime
Verfasst: Mi Sep 24, 2008 4:50 pm
von Kerli
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.
Re: Kompilierzeit mit _ftime
Verfasst: Mi Sep 24, 2008 4:54 pm
von nufan
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.
Re: Kompilierzeit mit _ftime
Verfasst: Mi Sep 24, 2008 4:58 pm
von Kerli
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
Was für ein Betriebssystem verwendest du denn?
Re: Kompilierzeit mit _ftime
Verfasst: Mi Sep 24, 2008 5:01 pm
von nufan
Kerli hat geschrieben:Was für ein Betriebssystem verwendest du denn?
Windows Vista. Ist das wichtig. Es _soll_ die Funktion _ftime verwendet werden...
Re: Kompilierzeit mit _ftime
Verfasst: Mi Sep 24, 2008 5:02 pm
von nufan
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

Re: Kompilierzeit mit _ftime
Verfasst: Mi Sep 24, 2008 5:17 pm
von Kerli
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...
Re: Kompilierzeit mit _ftime
Verfasst: Mi Sep 24, 2008 5:21 pm
von nufan
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...
Re: Kompilierzeit mit _ftime
Verfasst: Mi Sep 24, 2008 5:46 pm
von Kerli
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...