Präzise Zeitmessung für Benchmark unter Embedded Linux

Gast #1882000
Lesenswert?
• ▲
▼
Hallo zusammen,

ich möchte ein paar Benchmarks (C sources) auf ein Embedded Linux System 
portieren.

Welche Möglichkeit gibt es zur präzisen Zeitmessung ?

Kann man bei der Funktion clock() aus der time.h Library etwas über die 
Genauigkeit sagen? Gibt es Alternativen?

Wie würdet ihr versuchen Ungenauigkeiten durch das Scheduling des OS zu 
minimieren?

Grüße
#1885041
Lesenswert?
• ▲
▼
Also ich habe immer sowas gemacht
1
timeval ts;
2
gettimeofday(&ts,0);
Da gehts dann mit ts.tv_usec auf µs runter.
Nach meiner Erfahrung ist es sehr genau.
gettimeofday wird aber glaub ich bald abgeschafft (laut POSIX) und man 
sollte clock_gettime. Ich denke clock() greift auf die gleichen 
Funktionen zurück...
#1885055
Lesenswert?
• ▲
▼
Guter Artikel dazu in iX 3/2004, Seite 102

clock() misst nicht die abgelaufene Zeit wie auf der Uhr,
sondern die verbrauchte CPU-Zeit eines Prozesses.
Dieser Wert kann deutlich niedriger sein (wenn andere Prozesse
auch zum Zuge kamen) oder deutlich höher (wenn ein Prozess
im Schnitt mehr als einen Kern bzw. eine CPU zugeteilt bekommt).

Die Genauigkeit ist primär durch die Auflösung begrenzt, die
wiederum erfährt man aus dem Makro CLOCKS_PER_SEC auf dem
jeweiligen System.
#1886681
Lesenswert?
• ▲
▼
Das time() aus der C-Lib?
Das löst nur in Sekunden auf (besser gesagt in time_t, und das ist
auf allen Systemen in Sekunden).

Dieses time() misst abgelaufene Uhrzeit im Gegensatz zu clock().
Unabhängig von der Genauigkeit messen clock() und time() völlig
verschiedene Dinge.
Mit time() kannst du messen, wieviele Tage die Baufirma braucht,
um dein Haus einzureissen. Mit clock() wird festgestellt,
wieviele Mannstunden dafür gebraucht wurden, also je nach
Urlaub, Krankenstand und gleichzeitig Beschäftigte und was
letztlich.

Ebenfalls die Uhrzeit (wie time()) wird vom bereits erwähnten
gettimeofday() geliefert, und zwar genauer als von time().

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.