2016-03-23 14 views
5

Ho un'applicazione che generalmente utilizza il flag di ottimizzazione gcc -O0 (nessuna ottimizzazione). Ora ho un file opt.c che vorrei compilare con -O1 e lasciare il resto dei file con -O0.Va bene compilare file con diversi livelli di ottimizzazione gcc per la stessa applicazione?

Per essere più specifici, opt.c ha un ciclo for grande, che esegue alcune semplici operazioni aritmetiche.

Infine viene creato solo 1 file eseguibile che contiene tutti i file più il file opt.c. Non sono sicuro che ciò possa causare problemi!

risposta

6

Sì, è assolutamente soddisfacente. Sono curioso di sapere perché non ottimizzi tutto il tuo codice? Generalmente ottimizziamo tutto, tranne alcuni file in cui l'ottimizzazione causa problemi.

+0

Poiché è un'applicazione di grandi dimensioni, potrebbe esserci una possibilità di introduzione di errori (?) E richiederebbe ulteriori test. Per evitare ciò, viene applicato su un unico file. – kp11

+4

@ kp11 Le ottimizzazioni causano problemi solo quando vi sono errori nel codice o, molto meno probabile, ci sono errori nel compilatore o nella toolchain. Si consiglia vivamente di ottimizzare al massimo tutto il codice e risolvere eventuali problemi risultanti. Detto questo, approvo questa risposta. –

+2

@HadiBrais: In alcuni casi, le ottimizzazioni possono anche provocare il caos sul codice scritto per i dialetti di C che offrono comportamenti e garanzie utili oltre a quelli richiesti dallo Standard; in alcuni casi, il costo di runtime della disattivazione di un "ottimizzazione" del compilatore ottuso può essere inferiore al costo del codice che altrimenti sarebbe richiesto per proteggersi da esso. – supercat

Problemi correlati