Frage

sah ich durch die alten Fäden aber könnte die Antwort auf meine Frage nicht gefunden:

Wie kann ich den Körper meiner Funktion in einem C-Programm einer Zeit?

War es hilfreich?

Lösung

Eine einfache Methode ist die ‚Uhr‘ Funktion zu verwenden:

#include <time.h>

clock_t start, end;
double cpu_time_used;

start = clock();
... /* Do whatever you want to time */
end = clock();
cpu_time_used = ((double) (end - start)) / CLOCKS_PER_SEC;

Oder wenn Sie auf Linux sind, können Sie die ‚Zeit‘ Befehl zu Zeit, wie lange es die App auszuführen nimmt; Dies erlaubt Ihnen nicht, wenn ein bestimmten Codeabschnitt Zeit, und enthält die Zeit zum Starten des Prozesses genommen etc.

time ./myapp

Edit: Das ist sehr viel ein Grund 'Hack-in-a-quick-Timer' -Ansatz. Für einen echten Leistungsprofil möchten Sie zu einem geeigneten Profiler sehen, wie Larry Watanabe vorgeschlagen.

Andere Tipps

Es hängt von Ihrem Compiler und Betriebssystem. Auf Sun-Workstations, benutzte ich „prof“ oder „gprof“ zu verwenden. Es ist sicherlich ein Profilierungswerkzeug für Ihren Compiler, Betriebssystem und Maschine - nur google „C-Profil yourOS yourcompiler“ (ersetzen Sie den Namen Ihres OS und Compiler)

Die grundlegende Methode ist die Uhr () Funktion verwenden, das ist, wo wir alles angefangen hat.

Bsp.:


clock_t start = clock();
/* Your code */
printf("Time elapsed: %f\n", ((double)clock() - start) / CLOCKS_PER_SEC);

Wenn Sie jedoch über Betriebssysteme das Lernen beginnen, Hardware, Disponenten, Multi-Threading etc. realisiert werden Sie, dass die Ausführungszeit etwas sehr subjektiv ist. Wenn Sie messen Leistung wollen (was nicht notwendigerweise Ausführungszeit bedeutet), dann müssen Sie robustere Werkzeuge.

gprof ist ein wirklich einfach zu bedienen C-Profiler, die Sie besser das Konzept der Performance verstehen helfen könnte.

time ./a.out

über einen laufen und Ausgang wird sein:

real    0m0.017s
user    0m0.017s
sys 0m0.000s

real: Gesamt Endzeit von Programm / Befehl genommen beenden

user. Zeit im Benutzermodus genommen

sys: Zeit im Kernel-Modus genommen

Nicht sicher bestimmte Funktionen Namen in C, aber eine gängige Praxis ist, eine Mikrosekunde Zeitstempel zu speichern, bevor der Körper beginnt, dann ein anderes am Ende greifen und abziehen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top