da der Code für mein aktuelles Projekt schon fast fertig ist und auch alles prima läuft, möchte ich das Programm an einigen Stellen optimieren.
In meinem Programm verwende ich sehr oft das ASCII-Zeichen 59 (Semikolon). Nun würde mich mal interessieren, welches der 3 Testprogrammen am effektivsten und RAM-schonenden ist.
-Jan-:
In meinem Programm verwende ich sehr oft das ASCII-Zeichen 59 (Semikolon). Nun würde mich mal interessieren, welches der 3 Testprogrammen am effektivsten und RAM-schonenden ist.
Wenn Du ein char ausgeben möchtest, gibt man normalerweise keinen String (doppelte Hochkommas) aus, sondern ein einzelnes char-Zeichen (einfache Hochkommas):
client.print(';');
Ansonsten ist es bei stets derselben Stringkonstante so ziemlich gehupft wie gesprungen:
client.print(";");
Das ist eine Stringkonstante von 2 Bytes, und die belegt 2 Bytes RAM, egal ob Du sie im Programm einmal oder 100 mal ausgibst, dafür sorgt der Compiler, wenn Du identische Stringkonstanten mehrfach verwendest.
PSTR() ist lediglich ein Makro für "const PROGMEM char*"
Direkt in eine Funktion eingesetzt funktioniert das daher nur mit Funktionen die direkt einen PROGMEM String verarbeiten können. Das sind oft nur die _P Funktionen in der string.h Library der avr libc.
P() kann man dann wie F() verwenden. Aber für alle möglichen Funktionen und nicht nur print(). Das kostet natürlich erst mal RAM für den Puffer, aber wenn man viele etwas längere String Konstanten hat (und diese nicht nur für print() benötigt) spart man letztendlich Speicher. Den Puffer kann man außerdem noch für andere Dinge verwenden.
Ob sich das lohnt hängt davon ab was man genau macht. Ist vielleicht etwas speziell. Wenn man nur Ausgaben auf Serial und/oder Ethernet hat bringt es nichts.