Go Down

Topic: [gelöst] Warum ergibt sizeof(Data) immer ein Byte mehr? (Read 991 times) previous topic - next topic

HTML-Fan


HTML-Fan


Serenifly

pack(n) kann man ja mehrmals verwenden oder auch mit pack() wieder die ursprüngliche Ausrichtung herstellen

HTML-Fan

Aha. Vielen Dank für die Infos, ich denke, dass ich erstmal bei schnellerem Zugriff bleibe, die FPS bei meinem Spiel fallen so schon gerne auf 25.

agmue

Wie ist das denn beim ESP32?
6
00   00   00   00   00   00   
E8   03   34   12   64   00   


Mit #pragma pack(1):

5
00   00   00   00   00   
E8   03   34   12   64   

Die Vorstellungskraft ist wichtiger als Wissen, denn Wissen ist begrenzt. (Albert Einstein)

HTML-Fan

6
00   00   00   00   00   00   
E8   03   34   12   64   00   


Mit #pragma pack(1):

5
00   00   00   00   00   
E8   03   34   12   64   


Ja, das weiß ich. Ich meinte, wie sieht das denn mit Speicherzugriffgeschwindigkeit bei einem ESP32 aus, da Serenifly
Das hängt aber von der Prozessorarchitektur ab
geschrieben hat.

HTML-Fan

Ach ja, fast vergessen: Kann man das sizeof() dazu bewegen, nur die Anzahl der genutzen Bytes auszuspucken? Wenn ich einen Speicherstand habe, dann kann ich mir ja das Extra-Byte sparen.

Tommy56

sizeof sagt Dir die tatsächliche Größe. Das zusätzliche Byte kann durchaus zwischendrin sein, d.h. Du musst es mit speichern, wenn Du die Struktur speichern und wieder einlesen willst. Du kannst durch die Anordnung der Teile des struct evtl. schon etwas optimieren. Schau Dir mal diesen Thread an.

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

HTML-Fan

Aha. Mist. Aber viel macht's dann ja eh nicht aus.

Tommy56

Aber viel macht's dann ja eh nicht aus.
Schau Dir mal #6 an: von 7 auf 12 Bytes, wenn man es ungünstig anstellt.

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

HTML-Fan

Tatsächlich. Aber mit
Code: [Select]

struct Data{
  int32_t y;
  uint8_t hp;
  int16_t x;
};

sind's nur 8 Byte, das ist wieder nur ein Extra-Byte. Wie war das nochmal mit Kompiler und Optimierung?

Tommy56

Wer lesen kann/will und die verlinkten Artikel versteht, versteht auch das.

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

HTML-Fan

Gibt es eine Regel, nach der man in structs Variablen verteilen sollte? Gibt es online Tools, die einem structs optimieren?

Tommy56

Ja, die Ausrichtung verstehen. Den Rest macht brain 1.0.

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

HTML-Fan

Aha, ich glaube, ich hab's in etwa. Möglichst gleiche Typen hintereinander? Naja, ich habe ein paar lange structs und nicht exakt totale Lust, die Stück für Stück zu überarbeiten.

Go Up