mikrocontroller.net

Forum: Compiler & IDEs Programm der Übersichtlichkeit halber in Funktionen ordnen versus Programmspeicher


Autor: Heinz T.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Damit es etwas übersichtlicher wird, habe ich mal sämtliche 
Initialisierungsanweisungen in eine Funktion (besser Prozedur) gepackt 
und dann in main mit init(); aufgerufen.
Leider hat das ein paar Bytes gekostet, obwohl überflüssig.
Nimmt man das in kauf oder was?

Autor: yalu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Funktionen können auch ge-inline-t werden. Dann entfällt der
Aufruf-Overhead. Der GCC macht das u.a. dann automatisch, wenn dein
Haupt-Init und deine Sub-Inits alle in derselben .c-Datei stehen und
die Sub-Inits alle mit static deklariert sind. Dann erhältst du
das gleiche Ergebnis, als ob du allen Sub-Init-Code direkt ins
Haupt-Init geschrieben hättest.

Autor: Heinz T.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wunderbar, wieder was gelernt. Danke!

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Heinz T.K. schrieb:
"Leider hat das ein paar Bytes gekostet, obwohl überflüssig.
Nimmt man das in kauf oder was?"

Bei der Programmierung wird meist ein Spagat zwischen Lesbarkeit 
(Wartbarkeit) und Codegröße gemacht. Die paar zusätzlichen Bytes für 
mehr Lesbarkeit sollten immer geopfert werden. Also keine Sorge, du hast 
schon das Richtige gemacht.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Heinz T.K. wrote:
> Leider hat das ein paar Bytes gekostet, obwohl überflüssig.
> Nimmt man das in kauf oder was?

Wenn es unter 1% des gesamten Code kostet und die Lesbarkeit verbessert 
auf jeden Fall.
Ab Einsparungen größer 10% kann man darüber nachdenken.


Peter

Autor: der mechatroniker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Heute geht man normalerweise folgendermaßen vor:

1. Das Programm so schreiben, daß der Sourcecode möglichst übersichtlich 
und logisch aufgebaut ist.

2. Prüfen, ob du irgendwo die Anforderungen an Speicherverbrauch und 
Performance nicht einhalten kannst. Wenn alles o.k., bist du fertig, 
wenn nein, weiter.

3. Versuchen, herauszufinden, wo genau der größte Brocken 
(Speicher/Rechenzeit) verbraten wird.

4. Genau da optimieren.

5. goto 2.

Am Anfang der Programmentwicklung vermeintliche "Optimierungen" 
anzustellen, geht nach hinten los: Der Sourcecode wird sowas von 
unwartbar, daß man ihn später zur Optimierung, da wo sie wirklich 
gebraucht wird, nicht mehr anfassen mag.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.