www.mikrocontroller.net

Forum: Compiler & IDEs Präzise Zeitmessung für Benchmark unter Embedded Linux


Autor: mr.spock (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Timmo H. (masterfx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ich habe immer sowas gemacht
timeval ts;
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...

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klaus Wachtler schrieb:
> clock() misst nicht die abgelaufene Zeit wie auf der Uhr,
> sondern die verbrauchte CPU-Zeit eines Prozesses.

Ah, das wußte ich nicht. Heißt das time(0) wäre also etwas ungenauer?

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht 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().

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klaus Wachtler schrieb:
> Urlaub, Krankenstand und gleichzeitig Beschäftigte und was
> letztlich.

fehlt noch:
... letztlich als Arbeitszeit auf der Rechnung auftaucht.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.