pluto hat geschrieben:Ich kenne mich mit Synapse nicht aus
Ich nutzte hierfür LNET. Synapse nutzte ich an andere Stelle.
Gut, deinem Beispiel entnehme ich, ich kann auch bei SendString bleiben. Die Methode macht es intern ganz ähnlich... Dann haben Record für mich keinen Sinn.
Der Record ist ja für dateneffizienz bei den binären Daten gemeint, binärdaten sind logarithmisch zur Basis 2 groß, das Äquivalent als String wäre logarithmisch zur Basis 10 damit ist die stringvariante bis zu einem Faktor von 3,3. du sendest also bis zu 3 mal mehr Daten als notwendig
Beispiel
10000 würde als Word 2 Byte brauchen, als String 5 Byte
Und das nur für Integer, für Floating point typen wie Single oder Double sogar noch mehr, und bei enums kann man beliebig viel Speicher verbrauchen
Beispiel
Die Befehle Start und Stop würden als Enum nur ein Byte verbrauchen, als String 5 Byte, oder
Code: Alles auswählen
TBeispielEnum = (nbeIrgendeinLangerName, nbIrgendeinAnderererLangerName); // 1 Byte, die strings c.a. 30 Byte
Außerdem fällt das Stringparsing weg, um eine Zahl zu lesen muss für jeden Char mehrere Rechenoperationen durchgeführt werden. Wenn du es als Integer liest dann allerhöchstens die Drehung der Bytes wegen der Endianess was 2 Schreiboperationen für jedes Byte wären, aber es hätte bis zu 3 mal weniger Bytes zu lesen.
Aber wie schon zu Anfang gesagt, strings sind recht bequem und vor allem flexibel und vielseitig einsetzbar, und du brauchst das für das Lokale System nicht zu optimieren, wenn du es optimieren willst ist es eben aufwendig.