Anzeige:
Ergebnis 1 bis 9 von 9

Thema: time.h

  1. #1
    Registrierter Benutzer
    Registriert seit
    24.06.2002
    Ort
    Ober-Ramstadt
    Beiträge
    59

    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
    In a world wothout fences, who
    needs Gates?

  2. #2
    Registrierter Benutzer
    Registriert seit
    14.09.2002
    Ort
    Bruchsal
    Beiträge
    164
    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 : ...)?

  3. #3
    Registrierter Benutzer
    Registriert seit
    24.06.2002
    Ort
    Ober-Ramstadt
    Beiträge
    59
    Ich dachte das liefert die ticks pro Sekunde. Das Programm soll auf verschiedenen Maschinen laufen, auch nur mit der Rescue diskette.

    tiris
    In a world wothout fences, who
    needs Gates?

  4. #4
    Registrierter Benutzer
    Registriert seit
    14.09.2002
    Ort
    Bruchsal
    Beiträge
    164
    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.

  5. #5
    Registrierter Benutzer
    Registriert seit
    24.06.2002
    Ort
    Ober-Ramstadt
    Beiträge
    59
    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
    In a world wothout fences, who
    needs Gates?

  6. #6
    Registrierter Benutzer
    Registriert seit
    14.09.2002
    Ort
    Bruchsal
    Beiträge
    164
    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.

  7. #7
    Registrierter Benutzer
    Registriert seit
    24.06.2002
    Ort
    Ober-Ramstadt
    Beiträge
    59
    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
    In a world wothout fences, who
    needs Gates?

  8. #8
    Registrierter Benutzer
    Registriert seit
    14.09.2002
    Ort
    Bruchsal
    Beiträge
    164
    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.

  9. #9
    Registrierter Benutzer
    Registriert seit
    24.06.2002
    Ort
    Ober-Ramstadt
    Beiträge
    59
    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
    In a world wothout fences, who
    needs Gates?

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •