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
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...
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.
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?
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().
Klaus Wachtler schrieb: > Urlaub, Krankenstand und gleichzeitig Beschäftigte und was > letztlich. fehlt noch: ... letztlich als Arbeitszeit auf der Rechnung auftaucht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.