Archiv verlassen und diese Seite im Standarddesign anzeigen : time.h
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 : ...)?
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.
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.
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.
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
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.