Forum: Mikrocontroller und Digitale Elektronik Atmega; Codeoptimierung


von Hans W. (hans_wurst)


Lesenswert?

Hallo,

ich verwende den Atmega3290p, schreibe gerade eine simple Schleife und 
frage mich gerade ob es wohl geschickter ist einen (z.B. als 
Funktionsargument übergebenen) Wert zu dekrementieren und diesen 
abzufragen wann er 0 ist. Oder ob das dekrementieren aufwändiger ist und 
ich lieber einen neuen Wert mit 0 definieren sollte, diesen 
inkrementieren und mit dem gewünschten Endwert zu vergleichen.
1
// Variante A:
2
void funktion(int Endwert)
3
{
4
    while (Endwert)
5
    {
6
        // tu etwas...
7
        Endwert--;
8
    }
9
}
10
11
// Variante B:
12
void funktion(int Endwert)
13
{
14
    int Zwischenwert = 0;
15
16
    while (Endwert > Zwischenwert)
17
    {
18
        // tu etwas...
19
        Zwischenwert++;
20
    }
21
}

Wie sind eure Meinungen? Oder sind beide Varianten gleich schnell? Wo 
könnte ich für dieses Thema gezielter nachlesen?

Danke schon für die Tipps.

von Gast (Gast)


Lesenswert?

Beide Varianten compilieren und die Ergebnisse anschauen. Da sollte dann 
deutlich werden dass erstere "schneller" (weniger Takte benötigt) ist.

von Hans W. (hans_wurst)


Lesenswert?

Ok, danke dir.

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.