Dauer eines For-Schleifen Durchlaufs

#841126
Lesenswert?

Das hängt von dem Maschinencode ab, den der Compiler daraus macht. Das 
wiederum ist im allgemeinen u.a. abhängig von der eingestellten 
Optimierungsstufe.
Im Beispiel werden noch Funktionen (oder Macros) verwendet, deren 
Laufzeit mit eingeht. Wenn das echte Funktionen sind und die etwas 
sinnvolles machen, haben diese sogar den größten Anteil an der Laufzeit.
Also, ohne Kenntnis dieser Funktionen ist gar keine Aussage möglich.
Man kann es entweder Messen (z.B. Portpin am Schleifenanfang Toggeln und 
die Ausführungszeit dieser Instrumentierung herausrechnen) oder Zählen 
(alle Instruktionen, die der Compiler ausspuckt, mit der jeweiligen 
Zyklenzahl werten) für letztere Methode muß noch die CPU-Clk bekannt 
sein (könnte ja heruntergeteilt sein...).

Gruß

Martin
Gast #841298
Lesenswert?

Martin hat Recht, wenn du kein Oszi besitzt, dann ist es wohl am 
einfachsten, wenn du dir das beim kompilieren erstellte Listing 
(listfile) ansiehst. Dort solltest du mehr oder weniger den 
"Assembler"-Code sehen, den der GCC erzeugt. Dann noch die Maschinencode 
Taktzyklen raussuchen und manuell addieren.

Andere Methode wäre noch (weiß jedoch nicht wie genau), das Projekt im 
AVR Studio zu simulieren. Der Simulator kann dir die Zeit anzeigen, die 
seit Beginn vergangen ist (zu jedem Zeitpunkt). Wenn du vor deiner 
Schleife einen Breakpoint setzt, die Zeit notierst und danach wieder 
einen Breakpoint setzt, dann siehst du ca. die benötigte Durchlaufzeit.

Das ganze siehst du beim AVR Studio Simulator (links) mit dem Begriff 
"Stop Watch". Wichtig ist, dass du die Frequenz anpasst.

Roman
p.s. Mehr Tipps gibt's in meinem Buch: www.avrbuch.de

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren