Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » C Timer

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
22.10.2003, 13:27 Uhr
HRI-Dummy



Hi, schon wieder ich.
Weiss jemand eine Funktion mit der ich in C eine Art Timer zur Verfuegung habe? Ich will berechnen wie lange mein Programm zur Ausfuehrung braucht und suche schon eine Ewigkeit im Internet aber irgendwie habe ich nicht die richtigen Schlagwoerter oder keine Ahnung was...
Danke im Vorraus!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
22.10.2003, 13:36 Uhr
geissbock



also meiner meinung nach macht das clock().
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
22.10.2003, 13:37 Uhr
ao

(Operator)


Es gibt die ANSI-C-Funktion time (), die die aktuelle Systemzeit zurückgibt. Damit kannst du an geeigneten Stellen im Programm die Zeit nehmen und Differenzen berechnen.

Allerdings ist das *System*zeit und nicht Laufzeit *deines* Programms. Die Laufzeit aller anderen Programme, die gleichzeitig unterwegs sind, ist darin enthalten.

Darüberhinaus haben die meisten mir bekannten Betriebssysteme weitere Zeitroutinen, die u.U. für deinen Zweck besser geeignet sind.

Unter Windows gibts z.B. GetSystemTime, GetLocalTime, GetTickCount, GetProcessTimes.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
22.10.2003, 13:40 Uhr
geissbock



also clock liefert die laufzeit. zitat aus einem c-buch:

clock

#include <time.h>

Prototyp:

clock__t clock (void);

Rückgabewert:

Prozessorzeit in "Ticks" (systemabhängig)

Beschreibung:

bestimmt die Prozessorzeit, die das aufrufende Programm bis dahin verbraucht hat. clock_t ist in time.h als long definiert. Die Einheit für Prozessorzeit ist abhängig vom Compiler. Durch Division mit der in time.h definierten Konstanten CLK__TCK sollte das Ergebnis in Sekunden umgerechnet werden.

Beispiel:

z = clock(); /* weist z die Anzahl von "Ticks" zu,

die seit Programmstart vergangen sind */
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
22.10.2003, 13:56 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


ich verwende immer das hier

C++:
LONGLONG Frequency, CurrentTime, LastTime;
double TimeElapsed, TimeScale;
QueryPerformanceFrequency( (LARGE_INTEGER*) &Frequency);
TimeScale = 1.0/Frequency;
QueryPerformanceCounter( (LARGE_INTEGER*) &LastTime);
for(int i=0;i<100000;++i);  //irgendwas machen
QueryPerformanceCounter( (LARGE_INTEGER*) &CurrentTime);
TimeElapsed = (CurrentTime - LastTime) * TimeScale;
printf("\nTime elapsedt%f\n",TimeElapsed);


--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
22.10.2003, 14:45 Uhr
HRI-Dummy



Also ich programmiere unter Linux, werde einfach mal Eure Vorschlaege ausprobieren und sehen, was am besten funktioniert.
Danke fuer die schnellen Antworten!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
22.10.2003, 14:52 Uhr
HRI-Dummy



Noch eine Frage, wenn ich mit Clock() arbeiten will, berechnet das jetzt die Zeit seit dem das aufrufende Programm laeuft, oder geht das auch fuer die aufrufende Funktion?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
22.10.2003, 15:00 Uhr
geissbock



da du in linux das machst kann ich dir das noch empfelen:
www.linux-ist-trumpf.de/manpages/manpages.shtml
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
23.10.2003, 13:12 Uhr
HRI-Dummy



Endlich mal ein Linux-link, aber leider funktioniert der nicht. Auch habe ich es mit clock() und CLOCKS_PER_SEC versucht, aber da kommt entweder nur 0 oder totaler Schwachsinn bei raus. Habt Ihr vielleicht noch weitere Tips????????
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
23.10.2003, 14:50 Uhr
virtual
Sexiest Bit alive
(Operator)


Wieso, bei mir tut es:

C++:
#include <stdlib.h>
#include <time.h>

#define LOOPS 1000000000

int main()
{
    long i;
    printf("clocks at start: %u (%u secs)\n", clock(), clock()/CLOCKS_PER_SEC);

    for(i=0; i<LOOPS; ++i) { }

    printf("clocks after %lu loops %u (%u secs)\n", LOOPS, clock(), clock()/CLOCKS_PER_SEC);

}


ergibt:

C++:
27 $ a.out  
clocks at start: 0 (0 secs)
clocks after 1000000000 loops 6160000 (6 secs)


Vielleicht hast Du eine andere Vorstellung, was clock messen soll: es misst wirklich nur, was Dein Programm an Rechenzeit verbraucht. Wenn Du zB Dein Programm mittels sleep() Schlafen legst, dann verbraucht es keine CPU Zeit, also wird das nicht mitgezählt...
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: