Hallo zusammen, ich bin gerade dabei ein neues AVR-Projekt zu beginnen und stelle mir nun einige Fragen. Ich kann um mein Projekt übersichtlicher zu halten viele kleine Module und methoden erstellen. Was mich daran stört ist, dass wenn ich für eine kleine Aufgabe direkt eine Methode schreibe und diese nur einmal verwendet wird, führt das nicht zu einem Delay(Push/Pop-Befehle)?
Ja, wenn einen die paar CPU Takte stören kann man die Methode auch inline deklarieren.
Dieter N. schrieb: > Was mich daran stört ist, > dass wenn ich für eine kleine Aufgabe direkt eine Methode schreibe und > diese nur einmal verwendet wird, führt das nicht zu einem > Delay(Push/Pop-Befehle)? kommt darauf an, ob es in verschiedenen Dateien ist und wie die kompilierst. ( Stichwort: LTO (link-time optimization) )
Dieter N. schrieb: > führt das nicht zu einem > Delay(Push/Pop-Befehle)? Ähhmm... Sorry, aber bei einer solchen Frage, kann ich nur vermuten, dass die wirklichen Zeitfresser ganz woanders sind. Eigentlich kann man immer nur in eine Richtung optimieren. Entweder Speed, oder Platz. Du versuchst Richtung "Modular" zu optimieren. Das ist schön und gut so. Meist muss man dann aber Abstriche bei Speed, UND Platz machen. Also: Bilde einen Kompromiss! Aber das erst, wenn du wirklich ganz genau weißt, WO es eng wird. Denn: Für ungenutzten Speicher und eingesparte Taktzyklen gibts kein Geld zurück.
Dieter N. schrieb: > Was mich daran stört ist, > dass wenn ich für eine kleine Aufgabe direkt eine Methode schreibe und > diese nur einmal verwendet wird, führt das nicht zu einem > Delay(Push/Pop-Befehle)? Mit diese Frage sollst du dich nur beschaeftigen wenn es wichtig ist. Wenn zB einen ADC conversion 133.71 statt 133.62 millisekunden dauert, ist das nicht wichtig. Aber wenn du ein loop hast der 10000 angerufen wird, ja dann ist es wichtig. Wenn man keine 'Methode' dafuer benutzt, ist es oft schwieriger lesbar und ist es schwieriger zum debuggen.
Hinzu kommt, dass es der Compiler einem oft beim Optimieren abnimmt, ob eine Funktion inline benutzt wird, auch wenn diese so gar nicht definiert ist -und umgekehrt.
Dieter N. schrieb: > wenn ich für eine kleine Aufgabe direkt eine Methode schreibe und diese > nur einmal verwendet wird, führt das nicht zu einem Delay Arduino macht das genau so. Wenn das schnell genug für dich wäre, brauchst du dir keine Gedanken zu machen. Ansonsten: Erstmal sauber und modular entwickeln, bis funktionale Korrektheit erreicht ist. Dann optimieren, falls und wo nötig. "static inline" Funktionen oder Macros können dabei helfen, Performance und Modularität zu vereinen.
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.