2012-10-17 14 views
5

In un progetto su cui sto lavorando, c'è un quadruplo nidificato ciclo for in un file di grandi dimensioni che sto cercando di ottimizzare penso potrebbero trarre vantaggio da un compilatore unroll con -funroll- tutti-loops. Tuttavia, quando aggiungo questo flag per il compilatore, si srotola l'altro loop il resto del file e rende il programma generale eseguito più lentamente. C'è un modo (possibilmente attraverso un #pragma) per applicare flag di compilazione solo a determinate funzioni del file invece che l'intero file?GCC - Attivare flag di compilazione solo su specifiche funzioni

Grazie in anticipo.

+1

forse il vero problema sono i 4 cicli annidati ... – Joe

risposta

1

vorrei suggerire in movimento quella particolare funzione in un file .c separato che può essere compilato con le opzioni extra che si desidera utilizzare. Ciò potrebbe richiedere la creazione di un'intestazione di stile "foo_private.h" da condividere tra il file .c esistente e quello nuovo che consente loro di condividere qualsiasi variabile dichiarata come statica nel file .c originale

6

The GCC function attributeoptimize può essere usato per impostare un'opzione di ottimizzazione per una singola funzione:

void foo(int bar) __attribute__((optimize ("unroll-all-loops"))) 
{ 
} 
Problemi correlati