Durchsatzberechnung unter Verwendung von Zykluszahl
-
28-09-2019 - |
Frage
Ist es möglich, den Durchsatz einer Anwendung auf einem Prozessor aus den Taktzahlen (Prozessor-Befehlszyklen) durch die Anwendung verbraucht zu bestimmen? Wenn ja, wie es berechnen?
Lösung
Wenn der Prozess vollständig CPU gebunden ist, dann teilen Sie die Prozessorgeschwindigkeit durch die Anzahl der Zyklen, um den Durchsatz zu erhalten.
In Wirklichkeit sind einige Prozesse vollständig CPU gebunden, obwohl, in dem Fall, dass Sie andere Faktoren nehmen (Plattengeschwindigkeit, Speichergeschwindigkeit, Serialisierung, etc.) berücksichtigt werden.
Andere Tipps
Ganz einfach:
#include <time.h>
clock_t c;
c = clock(); // c holds clock ticks value
c = c / CLOCKS_PER_SEC; // real time, if you need it
Beachten Sie, dass der Wert, den Sie erhalten, ist eine Annäherung, für weitere Informationen finden Sie in der clock()
Manpage .
Einige CPUs verfügen über interne Leistungsregister , die es Ihnen ermöglichen, alle möglichen interessanten Statistiken zu sammeln, wie Befehlszyklen (manchmal sogar auf einer Pro-Ausführungseinheit-Basis), Cache-Misses, Anzahl der Cache / Speicher liest / schreibt, etc. Sie diese direkt zugreifen können, aber je nachdem, was CPU und OS Sie es verwenden vorhandenen Tools kann gut sein, das alle Details für Sie über eine GUI zu verwalten. Oft ist ein gutes Werkzeug Profilierungs Unterstützung für Leistungsregister haben und ermöglichen es Ihnen zu sammeln Statistiken mit ihnen.
Wenn Sie die Cortex-M3 verwenden von TI / Luminary Micro, können Sie nutzen die driverlib geliefert von TI / Luminary Micro machen. die SysTick Funktionen können Sie die SysTickPeriod auf 1 Prozessorzyklus gesetzt: So können Sie 1 Prozessortakt zwischen Unterbrechungen haben. Durch Zählen der Anzahl der Interrupts sollten Sie eine „nahe genug Schätzung“ auf, wie viel Zeit eine Funktion oder ein Funktionsblock nehmen.