Laufzeit
-
Hallo, liebe begleiter...
Gibt es irgendeinen befehl, der die Laufzeit eines Programmes anzeigt?
Danke für die Antwort
-
Miss die Zeit doch einfach (GetTickCount, QueryPerformaceCounter, wasauchimmer).
-
Der Befehl heißt "time".
# time <meinprogramm> real 0m0.000s user 0m0.000s sys 0m0.000s
-
Leider arbeite ich am Apple mit Xcode, so daß MS wohl ausfällt...
-
LordJaxom schrieb:
Der Befehl heißt "time".
# time <meinprogramm> real 0m0.000s user 0m0.000s sys 0m0.000sunter Windows wird das kaum gehen...
-
Hallo, habe den befehl nach return Null eingebaut: time_t time(time_t *tp);
kann in der Console trotzdem keine Zeit erkennen. Sitze am Mac
-
Airdamn schrieb:
unter Windows wird das kaum gehen...

Ich weiß, der war gemein. Der OP wollte einen Befehl um die Laufzeit zu messen, ich habe ihm einen (irgendeinen) gegeben. Völlig korrekte Antwort auf eine unzureichend gestellte Frage.
Inzwischen wissen wir aber wohl, dass er eine Funktion oder Technik sucht, um innerhalb eines C++-Programms die Laufzeit zu messen, die in der main-Funktion verbracht wird. Da war der Hinweis von matze schon garnicht schlecht, aber für Windows ("unter Mac wird das kaum gehen..." :D). Für UNIXoide müsste da gettimeofday() zur Verfügung stehen.
Allgemein zum Thema:
Bei return 0 ist die Funktion verlassen worden. Ausdrücke, die nach dem Verlassen einer Funktion aufgeführt sind, werden niemals ausgeführt. Generell kann man die Zeit messen, indem man vor dem ersten zu messenden Ausdruck die Zeit nimmt, und vor return (bzw. vor Ende von main) nochmal. Daraus die Differenz ist dann die Laufzeit.
-
Ich hatte den Code erst vor return reingetan, da sagte Xcode, daß dies erst nach return geht. Fand ich irgendwie folgerichtig, da Return ja noch Programm ist.
Also ich möchte echt die Zeit messen, die das Programm benötigt. Verlangsamt der time-Befehl den Rechner wesentlich?
Danke für die Infos, aber noch ist das Problem nicht ausgestanden.
Ich poste mal den Code
#include <iostream> using namespace std; int main (int argc, char * const argv[]) { long long Zaehlgrenze = 10000; long long zaehler = 0; long long trigonal = 0; printf("Das Programm sucht innerhalb des Intervalls von 0 bis %d die Zahlen heraus, welche zugleich Quadratzahlen und Trigonalzahlen sind. \n", Zaehlgrenze); while (zaehler < Zaehlgrenze) { trigonal = trigonal+zaehler; for (long long i=1, x = zaehler/2; x*x <= trigonal; i += ++x) if (trigonal== x*x) cout << "Zaehler=\t " << zaehler <<"\t" <<" Sum= \t " << trigonal << "\tt" << " xq = \t " << x*x << "\t" << "Sqrt = \t " << x << endl; zaehler++; } printf("Das Programm endet mit Zähler %d\n", zaehler); printf("Die höchste Trigonalzahl %d\n", trigonal); return 0; time_t time(time_t *tp); }
-
brak schrieb:
Ich hatte den Code erst vor return reingetan, da sagte Xcode, daß dies erst nach return geht. Fand ich irgendwie folgerichtig, da Return ja noch Programm ist.
Nochmals: Mit
returninmain()wird das Programm beendet. Nachher kannst du nichts mehr tun. Und du kannst ebensowenig die Programmlaufzeit exakt innerhalb des Programmes messen. Und weil es fast aufs Gleiche hinausläuft, kannst du vor Programmende nochmals die Zeit messen.brak schrieb:
Also ich möchte echt die Zeit messen, die das Programm benötigt. Verlangsamt der time-Befehl den Rechner wesentlich?
Kaum, da brauchst du dir keine Gedanken zu machen. Die Frage ist eher, ob der "Befehl" der richtige ist.
brak schrieb:
Ich poste mal den Code
Wann lernst du endlich, CPP-Tags zu benutzen? Das ist die erste weisse Schaltfläche links oben unter dem Textfenster. Das sieht dann viel schöner aus:
int main() { return 0; }
-
Hallo, vielleicht bin ich ein bischen blöde. Ich finde auf dem Xcode-Brauser keine CPP-Tags links oben unter dem Text-Fenster. Oder meinst Du dies hier
returnWas heißt überhaupt CPP?
-
brak schrieb:
Oder meinst Du dies hier
returnWas heißt überhaupt CPP?
Genau das ist gemeint, und CPP steht für C Plus Plus (C++).
cu André
-
brak schrieb:
Hallo, vielleicht bin ich ein bischen blöde. Ich finde auf dem Xcode-Brauser keine CPP-Tags links oben unter dem Text-Fenster. Oder meinst Du dies hier
returnWas heißt überhaupt CPP?
Das findest du nicht im Browser selbst, sondern von der Seite her.
Schau mal, wo du diesen Smylie siehst:

Und darunter steht C/C++ (CPP steht für C++, c plus plus)
Wenn du den drückst, geht [ cpp] auf und darin kannst du C++ Code schreiben,welcher dann farbig hier ausgegeben wird. Am Ende des Codes nochmal drücken und dann kommt [ /cpp], was den Code wieder schliesst.
-
:o
-
Mach ich das halt, sonst dauert das noch Stunden:
#include <iostream> using namespace std; int main (int argc, char * const argv[]) { long long Zaehlgrenze = 10000; long long zaehler = 0; long long trigonal = 0; printf("Such innerhalb des Intervalls [0...%d] die, die zugleich Quad.zahlen und Trig.zahlen sind.\n", Zaehlgrenze); while (zaehler < Zaehlgrenze) { trigonal = trigonal+zaehler; for (long long i=1, x = zaehler/2; x*x <= trigonal; i += ++x) if (trigonal== x*x) cout << "Zaehler=\t " << zaehler <<"\t" <<" Sum= \t " << trigonal << "\tt" << " xq = \t " << x*x << "\t" << "Sqrt = \t " << x << endl; zaehler++; } printf("Das Programm endet mit Zähler %d\n", zaehler); printf("Die höchste Trigonalzahl %d\n", trigonal); return 0; time_t time(time_t *tp); }
-
Die [code]-Tags hast du ja auch hingekriegt. Gleich links davon sind die [cpp]-Tags. Während bei den Code-Tags nur eine Rasterausrichtung des Textes durchgeführt wird, haben die C/C++-Tags noch Syntaxhighlighting, was die Übersicht massiv erhöht.
sothis_ schrieb:
:o
Wieder mal ein sehr hilfreicher Kommentar... :p
Fellhuhn schrieb:
Mach ich das halt, sonst dauert das noch Stunden
Aber so lernt er es nie

-
#include <iostream> #time <main.cpp-ds> using namespace std; int main (int argc, char * const argv[]) { long long Zaehlgrenze = 10000; long long zaehler = 0; long long trigonal = 0; printf("Das Programm sucht innerhalb des Intervalls von 0 bis %d die Zahlen heraus, welche zugleich Quadratzahlen und Trigonalzahlen sind. \n", Zaehlgrenze); while (zaehler < Zaehlgrenze) { trigonal = trigonal+zaehler; for (long long i=1, x = zaehler/2; x*x <= trigonal; i += ++x) if (trigonal== x*x) cout << "Zaehler=\t " << zaehler <<"\t" <<" Sum= \t " << trigonal << "\tt" << " xq = \t " << x*x << "\t" << "Sqrt = \t " << x << endl; zaehler++; } printf("Das Programm endet mit Zähler %d\n", zaehler); printf("Die höchste Trigonalzahl %d\n", trigonal); realloc(<#void * #>, <#size_t #>); user_addr_t; system(<#const char * #>); return 0; }Das hab ich gemacht, kriege aber nur Warnungen.
Oben steht beim Time-Befehl: **"Invalid prepocessor direktive #time"
**
Bei "realloc" steht: "ERROR expected primary exprssion before < token"
Bei "useradr" steht: "ERROR Declaration does not declare anything"
Bei "system" steht: "ERROR expected primary expression before < token"Also alles höchst frustrierend.
-
Nexus schrieb:
sothis_ schrieb:
:o
Wieder mal ein sehr hilfreicher Kommentar... :p
wie lange braucht ihr in der regel um trollposts zu erkennen?

-
brak schrieb:
realloc(<#void * #>, <#size_t #>); user_addr_t; system(<#const char * #>);Bei "realloc" steht: "ERROR expected primary exprssion before < token"
Bei "useradr" steht: "ERROR Declaration does not declare anything"
Bei "system" steht: "ERROR expected primary expression before < token"Was ist daran verwunderlich? Die Syntax stimmt halt nicht. Und was
#timebetrifft: Dein Compiler unterstützt die Direktive eben nicht. Was möglicherweise daran liegt, dass es diese nicht gibt.
-
#include <iostream.h> using namespace std; int main (int argc, char * const argv[]) { long long Zaehlgrenze = 10000; long long zaehler = 0; long long trigonal = 0; printf("Das Programm sucht innerhalb des Intervalls von 0 bis %d die Zahlen heraus, welche zugleich Quadratzahlen und Trigonalzahlen sind. \n", Zaehlgrenze); while (zaehler < Zaehlgrenze) { trigonal = trigonal+zaehler; for (long long i=1, x = zaehler/2; x*x <= trigonal; i += ++x) if (trigonal== x*x) cout << "Zaehler=\t " << zaehler <<"\t" <<" Sum= \t " << trigonal << "\tt" << " xq = \t " << x*x << "\t" << "Sqrt = \t " << x << endl; zaehler++; } printf("Das Programm endet mit Zähler %d\n", zaehler); printf("Die höchste Trigonalzahl %d\n", trigonal); return 0; }
Hab ich doch kapiert... Nur das mit der Zeitmessung noch nicht...
-
Das lies dir das Beispiel hier durch. Dann dürfte alles klar sein.