Timer in C++???



  • Hallo Leute das is mein erster poste..

    ich hab eine Frage:
    Ich fang grad erst an mit C++, und bräuchte in einem meiner (150 zeilen 😞 )Programme einen Timer, der mir sekunden mit zählt, bis das Prog eine funktion ausgeführt hat...

    Geht das?

    Danke für antworten!



  • Hm, wenns dir nur um Zeitmessung geht,
    musst du die Klasse nur in dein Projekt einbinden, ne instanz erstellen,
    und start() bzw. end() aufrufen. Das Ergebnis ist dann in Millisekunden (float).

    Devil



  • Also du brauchst gar keinen "richtigen" Timer, der taktmäßig Funktionen ausführt oder so, du willst einfach nur eine Zeitdifferenz messen?

    Dann stopp doch die Zeit vor der Funktion und nach der Funktion und miss die Zeitdifferenz. Dafür gibt's verschiedene Möglichkeiten, kommt drauf an wie genau du es haben willst, z.B. "time_t time(time_t *timer)" in "time.h" misst die Zeit in Sekunden seit 1970 oder so...



  • Danke devil!!

    deine 2 files haben echt geholfen...

    auch wenn ich noch nicht gaaaanz durchblicke...
    auch wenns peinlich ist, aber wie soll ich die instanz in der function test()
    aufrufen??

    ich bräucht die zeit dieser aktion:

    while (true)
    	{
    		counter++;
    			if (counter>24000)
    			{
    				counter=1;
    				break;
    			}
    
    			if (counter%500==0)
    				cout<<":";
    	}
    

    ist zwar echt schwach ich weiß aber trotzdem 😞



  • Ähm hat sich schon geklärt danke...

    ich sollt zuerst denken und dann jammern.... 🙂

    trotzdem thx



  • übrigens: <iostream.h> ist schon seit längerer Zeit als "deprecated" eingestuft..

    #include <iostream>
    


  • und: merci devil81 für deine hübsche klasse.. 👍

    ABER: Du sagst, die Ausgabe sei in Millisekunden. Sind es nicht Sekunden?

    // Zeitmessung.cpp
    
    	return (float)(e-s)/CLOCKS_PER_SEC; 
    
    // time.h
    	/*
    	* Number of clock ticks per second. A clock tick is the unit by which
    	* processor time is measured and is returned by 'clock'.
    	*/
    	#define	CLOCKS_PER_SEC	((clock_t)1000)
    


  • Wieviel ist ein 1000stel einer Sekunde ? 🙄

    Devil



  • devil81 schrieb:

    Wieviel ist ein 1000stel einer Sekunde ? 🙄

    nate7 hat schon Recht. Wenn man Clockticks durch Clockticks pro Sekunde teilt, kommen Sekunden raus. Du solltest auch die Verwendung der include- und using-Direktiven in Zeitmessung.h überdenken.



  • würde

    const clock_t clocksPerSec=1000;
    

    nicht besser sein?^^



  • otze schrieb:

    würde

    const clock_t clocksPerSec=1000;
    

    nicht besser sein?^^

    Nur, wenn du Linkerfehler willst, sobald mehr als eine Datei time.h einbindet. 😉



  • devil danke echt genial....

    aja, und die ausgabe ist in sekunden 🙂

    ganz sicher habs ja am screen 🙂

    die klasse ist echt nett nur devil:

    Zeitmessung::ergebnis() ist völlig überflüssig wenn du bei Zeitmessung::end()

    bereits als return den float von e-s zurückgibst... oder?

    oder hab ich mal wieder was verpasst?

    bei mir funzt jedenfalls die rückgabe so:

    float answer;
    //text
    Zeitmessung Zeit;
    Zeit.start();
    //was auch immer...
    //usw...
    
    answer=Zeit.end();
    cout<<"Die Zeit.. (usw...)bertägt: "<<answer<<"!\n";
    //weiter gehts
    

    wofür also noch

    ergebniss
    

    ???

    bitte um aufklärung...(bin verwirrt) 😞



  • MFK schrieb:

    otze schrieb:

    würde

    const clock_t clocksPerSec=1000;
    

    nicht besser sein?^^

    Nur, wenn du Linkerfehler willst, sobald mehr als eine Datei time.h einbindet. 😉

    ach, und sowas kann man nicht konfortabel innerhalb einer Klasse platzieren? 🙄



  • otze schrieb:

    ach, und sowas kann man nicht konfortabel innerhalb einer Klasse platzieren? 🙄

    Komfortabel vielleicht. Sinnvoll kaum. Außerdem ärgert man so alle C-Programmierer, die time.h benutzen.



  • @ BE:ER
    Das mit dem Zeitmessung::ergebnis() ist dafür da, dass man später nochmals das Ergebnis anschauen kann..
    (und die Variable aus end() vergessen hat) 😉

    Ernsthaft: wenn in einem anderen Programmteil (ausserhalb des Gültigkeitsbereichs) das Ergebnis möchte, kann man es so abrufen.

    Und wieso musst du denn alles verstehen 😕
    Freu dich doch einfach daran, dass es Sachen gibt, die man nicht gerade sofort versteht.. :p


Anmelden zum Antworten