Als «strict-aliasing» getaggte Fragen


3
Die Verwendung dieses Zeigers führt zu einer merkwürdigen Deoptimierung im Hot-Loop
Ich bin kürzlich auf eine seltsame Deoptimierung gestoßen (oder habe eher eine Optimierungsmöglichkeit verpasst). Betrachten Sie diese Funktion zum effizienten Entpacken von Arrays aus 3-Bit-Ganzzahlen in 8-Bit-Ganzzahlen. In jeder Schleifeniteration werden 16 Zoll entpackt: void unpack3bit(uint8_t* target, char* source, int size) { while(size > 0){ uint64_t t = *reinterpret_cast<uint64_t*>(source); target[0] …

13
Sollte ich mir in C ++ die Mühe machen, Variablen zwischenzuspeichern, oder den Compiler die Optimierung durchführen lassen? (Aliasing)
Betrachten Sie den folgenden Code ( pist vom Typ unsigned char*und bitmap->widthhat einen ganzzahligen Typ, der genau unbekannt ist und davon abhängt, welche Version einer externen Bibliothek wir verwenden): for (unsigned x = 0; x < static_cast<unsigned>(bitmap->width); ++x) { *p++ = 0xAA; *p++ = 0xBB; *p++ = 0xCC; } Lohnt …
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.