Forum: Compiler & IDEs sprintf_P Vor und Nachteile


von Michael (Gast)


Lesenswert?

Hallo,

kann mir jemand erläutern wo die Vor und Nachteile dieser Varianten 
liegen.
1
sprintf_P(temp,PSTR("%d"),value);
2
3
sprintf(temp,"%d",value);
Ich weiß daß die erste Variante die Daten in den Programm-Flash legt.
Und man spart RAM.

Ist daher die erste Variante uneingeschränkt besser?

Gruß Michael

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Michael schrieb:

> Ist daher die erste Variante uneingeschränkt besser?

Nein, sie ist geringfügig langsamer (Flash-ROM-Zugriffe kosten
3 Zyklen, SRAM-Zugriffe nur 2).  Wird natürlich im Kontext von
sprintf() nicht viel interessieren...

Außerdem werden (hatten wir neulich gerade) mehrere gleiche PSTR-
Literale nicht automatisch zu einem zusammengefasst, wenn man also
5x den gleichen Formatstring hat, den aber nicht in einer eigenen
separaten Variablen (eigentlich natürlich Konstanten) verwaltet,
dann braucht man insgesamt mehr Flash.

Ob der SRAM-Bedarf ein Problem ist oder nicht, hängt ja letztlich
auch davon ab, wie voll dein SRAM schon ist.  Du bekommst kein Geld
zurück, wenn du die Hälfte davon nicht benutzt. ;-)

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.