Forum: Mikrocontroller und Digitale Elektronik Init-Zustände in Fkt. auslagern


von Init (Gast)


Lesenswert?

Moin,

in wieweit verschlechtert sich ein Funktionscode, wenn man Funktionen 
erstellt, die nichts anderes tun, als init_Zustände herzustellen?

Bsp.-Fkt.:

void init_portpin(void)
{
P4DIR |= BIT0;
P4OUT &=~ BIT0;
}


Wird der Speicheraufwand und die Codeausführung (stark) negativ 
beeinflusst?

mfg

von Karl H. (kbuchegg)


Lesenswert?

Init schrieb:

> Bsp.-Fkt.:
>
> void init_portpin(void)
> {
> P4DIR |= BIT0;
> P4OUT &=~ BIT0;
> }
>
>
> Wird der Speicheraufwand und die Codeausführung (stark) negativ
> beeinflusst?

Wie oft rufst du denn die Funktion auf?
Da es sich um eine init Funktion handelt, wird die ja wohl nur ein 
einziges mal ganz am Anfang aufgerufen. Ob dein µC jetzt nach dem 
Einschalten 2 Hunderstelsekunden braucht, bis er einsatzfähig ist, oder 
deren 3 Hunderstelsekunden, wird wohl in den allerwendigsten Fällen 
irgendeine Rolle spielen.

Überlass es deinem Compiler, sich über derartige Low-Level 
Mikrooptimierungen den Kopf zu zerbrechen. Wenn es sich lohnt, die 
Funktion zu inlinen, dann wird das dein Compiler machen (wenn du ihm die 
Möglichkeit dazu gibst). Kümmere du dich lieber um vernünftige 
Algorithmen, das lohnt viel mehr, als sich über solchen Kleinkram ohne 
Not den Kopf zu zerbrechen.
Dein Hauptziel ist es in erster Linie übersichtlichen Code zu schreiben. 
Wenn du denkst, dass derartige Funktionen die Übersicht erhöhen, dann 
mach das.

von Init (Gast)


Lesenswert?

danke

von Das_Warzenschwein (Gast)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Kümmere du dich lieber um vernünftige
> Algorithmen, das lohnt viel mehr, als sich über solchen Kleinkram ohne
> Not den Kopf zu zerbrechen.
> Dein Hauptziel ist es in erster Linie übersichtlichen Code zu schreiben.

Stimmt 100%!

Nun zu deiner Frage:

Es gibt Funktionen:

- kleine Funktion, selten aufgerufen
- kleine Funktion, sehr häufig aufgerufen

kleine Funktion (Cycles: Aufruf/Rücksprung > Cycles in der Funktion) 
werden
je nach Compiler-Option (Size oder Speed) als Funktion (weniger 
Speicherverbrauch, langsamere Ausführung wegen Aufruf & Rücksrpung) oder 
direkt ins Hauptprogramm (größer Speicherverbrauch) eingefügt. Daher 
sollte man irgendwelche Optimierungsansätze vermeiden. Es bringt Dir 
praktisch nichts

- große Funktion (Algorithmen), wenig/oft aufgerufen -> Funktion lohnt 
sich immer (Übersichtlichkeit, Wartung, etc.) -> viel 
Optimierungspotential, z.B. Funktion in kleinere Funktionen aufteilen, 
und nur benötigte Funktionen für das jeweilige Problem aufrufen 
(Programm Struktur/ Algorithmen optimieren)

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
Noch kein Account? Hier anmelden.