Als «compiler-optimization» getaggte Fragen

Bei der Compileroptimierung wird ein Compiler angepasst, um die Laufzeit oder die Objektgröße oder beides zu reduzieren. Dies kann mithilfe von Compiler-Argumenten (z. B. CFLAGS, LDFLAGS), Compiler-Plugins (z. B. DEHYDRA) oder direkten Änderungen am Compiler (z. B. Ändern des Quellcodes) erreicht werden.

13
Wie erstelle ich eine Endlosschleife, die nicht optimiert werden kann?
Der C11-Standard scheint zu implizieren, dass Iterationsanweisungen mit konstanten Steuerausdrücken nicht optimiert werden sollten. Ich nehme meinen Rat von dieser Antwort , in der Abschnitt 6.8.5 des Standardentwurfs ausdrücklich zitiert wird: Eine Iterationsanweisung, deren steuernder Ausdruck kein konstanter Ausdruck ist, kann von der Implementierung als beendet angenommen werden. In dieser …

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] …

11
Effizienz der vorzeitigen Rückkehr in einer Funktion
Dies ist eine Situation, der ich als unerfahrener Programmierer häufig begegne und die ich mich besonders für ein ehrgeiziges, geschwindigkeitsintensives Projekt wundere, das ich zu optimieren versuche. Werden diese beiden Funktionen für die wichtigsten C-ähnlichen Sprachen (C, objC, C ++, Java, C # usw.) und ihre üblichen Compiler genauso effizient …

3
Optimierungsstufen klirren
Auf gcc, das Handbuch erklärt , was -O3, -Osetc. übersetzen zu in Bezug auf spezifische Optimierung Argumente ( -funswitch-loops, -fcompare-elimusw.) Ich suche die gleichen Informationen für Clang . Ich habe sehe Online und in man clangdenen gibt nur allgemeine Informationen ( -O2optimiert mehr als -O1, -Osoptimiert für die Geschwindigkeit, ...) …


3
Warum sollte Code aktiv versuchen, die Tail-Call-Optimierung zu verhindern?
Der Titel der Frage mag etwas seltsam sein, aber die Sache ist, dass meines Wissens nichts gegen die Optimierung von Tail Calls spricht. Beim Durchsuchen von Open Source-Projekten bin ich jedoch bereits auf einige Funktionen gestoßen, die aktiv versuchen, den Compiler daran zu hindern, eine Tail-Call-Optimierung durchzuführen, beispielsweise die Implementierung …


6
So deaktivieren Sie die Optimierung des gcc-Compilers, um den Pufferüberlauf zu aktivieren
Ich arbeite an einem Hausaufgabenproblem , bei dem der Compiler-Optimierungsschutz deaktiviert werden muss, damit es funktioniert. Ich verwende gcc 4.4.1 unter Ubuntu Linux, kann aber nicht herausfinden, welche Flags die richtigen sind. Mir ist klar, dass es von der Architektur abhängt - auf meinem Computer läuft ein 32-Bit-Intel-Prozessor. Vielen Dank.




2
Warum generiert die Verwendung des ternären Operators zur Rückgabe einer Zeichenfolge einen erheblich anderen Code als die Rückgabe in einem äquivalenten if / else-Block?
Ich habe mit dem Compiler Explorer gespielt und bin auf ein interessantes Verhalten mit dem ternären Operator gestoßen, wenn ich so etwas verwendet habe: std::string get_string(bool b) { return b ? "Hello" : "Stack-overflow"; } Der vom Compiler generierte Code dafür (Clang Trunk, mit -O3) lautet wie folgt: get_string[abi:cxx11](bool): # …



2
Schnellerer Teilbarkeitstest als% Operator?
Ich bemerkte eine merkwürdige Sache auf meinem Computer. * Der handschriftliche Teilbarkeitstest ist deutlich schneller als der %Bediener. Betrachten Sie das minimale Beispiel: * AMD Ryzen Threadripper 2990WX, GCC 9.2.0 static int divisible_ui_p(unsigned int m, unsigned int a) { if (m <= a) { if (m == a) { return …

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.