PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : time.h



tiris
07-12-2002, 16:03
Welchen Übergabetyp hat denn CLOCKS_PER_SECOND aus time.h? Ich versuche die ganze Zeit die Geschwindigkeit für meinen Prozessor in einer Variable zu speichern um die Zeit zu nehmen, aber es klappt nicht. Er schreibt jedesmal er hätte einen Parse-Error in der Zeile wenn ich die Variable benutze.

tiris

The Ripper
07-12-2002, 18:31
CLOCKS_PER_SECOND ist einfach nur ein Platzhalter für 1000000l (siehe /usr/include/bits/time.h, inkludiert von /usr/include/time.h).

Warum liest du die Prozessorgeschwindigkeit nicht aus /proc/cpuinfo aus (cpu MHz : ...)?

tiris
07-12-2002, 19:09
Ich dachte das liefert die ticks pro Sekunde. Das Programm soll auf verschiedenen Maschinen laufen, auch nur mit der Rescue diskette.

tiris

The Ripper
08-12-2002, 18:42
Naja, Konstanten in einer Header-Datei sind eigentlich immer statisch, nach dem Kompilieren kann sich daran nichts mehr ändern, auch nicht wenn das Programm auf einem anderen System ausgeführt wird.

Das proc-Dateisystem dagegen sollte eigentlich immer verfügbar sein, der Prozessortyp wird sogar von uname daraus ausgelesen.

tiris
10-12-2002, 17:31
Ich hab mir das bei meinem Proggy so vorgestellt, dass ich die Ticks zählen kann die zwischen 2 Aktionen durchlaufen. Wie soll ich denn da jetzt dran kommen. Über clock() geht das ja wohl dann nicht.

tiris

The Ripper
10-12-2002, 18:15
Die Ticks zwischen zwei Aktionen könnten sich so zählen lassen:
in /proc/stat gibts eine Zeile, vor der "cpu" steht, dahinter kommen 4 Werte:
Ticks im User-Modus
Ticks im Kernel-Modus
Ticks im Nice-Modus (Priorität eines Prozesses != 0)
Ticks in der Idle-Loop

Du kannst vor und nach deiner Aktion die Werte auslesen, summieren und vergleichen. top berechnet so z.B. die Prozessorauslastung.

tiris
10-12-2002, 22:28
Verändert dann nicht das Zugreifen an sich schon wieder die Werte?
Ich meine, wenn ein Programm zugreift und ausliest müßten sich doch im User Modus die Ticks ändern, oder ?
tiris

The Ripper
11-12-2002, 10:18
Theoretisch nicht nur im User-Modus, sondern auch im Kernel-Modus (Öffnen und lesen der Datei), aber ein anderer Weg ist mir aber nicht bekannt.
Je mehr du das System jedoch zwischen den beiden Auswertungen arbeiten lässt, je geringer wird die Ungenauigkeit.

tiris
11-12-2002, 19:31
Aber ich hätte das gerne als Stoppuhr, deshalb bräuchte ich die komplette Unterteilung in 450*10^9 ticks damit ich eine präzise angabe machen kann. Die Systemzeit reicht nicht, weil ich unter einer Sekunde Genauigkeit brauche.

tiris