2016-03-23 5 views
5

Ich habe eine Anwendung, die in der Regel das gcc-Optimierungs-Flag -O0 (keine Optimierung) verwendet. Jetzt habe ich eine Datei opt.c, die ich mit -O1 kompilieren möchte, und lasse den Rest der Dateien mit -O0.Ist es in Ordnung, Dateien mit verschiedenen Gcc-Optimierungsstufen für dieselbe Anwendung zu kompilieren?

Um genauer zu sein, opt.c hat eine große for-Schleife, die einige einfache Arithmetik durchführt.

Schließlich wird nur 1 ausführbare Datei erstellt, die alle Dateien plus die opt.c. Ich bin mir nicht sicher, ob dies ein Problem verursacht!

Antwort

6

Ja, das ist absolut in Ordnung. Ich bin neugierig, warum Sie nicht alle Ihren Code optimiert haben? Wir optimieren normalerweise alles, mit Ausnahme einiger Dateien, bei denen die Optimierung Probleme verursacht.

+0

Da es sich um eine große Anwendung handelt, könnte eine Fehlereinleitung (?) Auftreten und zusätzliche Tests erfordern. Um dies zu vermeiden, wird es auf eine Datei angewendet. – kp11

+4

@ kp11 Optimierungen verursachen nur Probleme, wenn entweder Fehler im Code vorhanden sind oder, noch viel wahrscheinlicher, Fehler im Compiler oder in der Toolchain. Es wird dringend empfohlen, den gesamten Code maximal zu optimieren und daraus resultierende Probleme zu lösen. Das heißt, ich stimme dieser Antwort zu. –

+2

@HadiBrais: In einigen Fällen können Optimierungen auch Code für Dialekte von C zerstören, die nützliche Verhaltensweisen und Garantien bieten, die über die vom Standard geforderten hinausgehen. In einigen Fällen können die Laufzeitkosten für die Deaktivierung der "Optimierung" eines stumpfen Compilers geringer sein als die Kosten des Codes, die ansonsten erforderlich wären, um dagegen zu schützen. – supercat

Verwandte Themen