Newsgroup: it.comp.os.linux.sys
Titolo: CFLAGS

Salve a tutti,
nella realizzazione di un server abbastanza snello (RedHat 9.0 con i 
pacchetti minimi indispensabili e con l'aggiunta di quelli per le 
compilazioni, hardware i686) da completare con software compilato "a 
manina" da sorgenti utilizzo i seguenti CFLAGS:
"-O3 -march=i686 -mcpu=i686 -fomit-frame-pointer -funroll-loops"
ed ottengo buoni risultati in termini di prestazioni dei binari...
C'è qualche soluzione migliore in termini di stabilità (ho sentito dire 
che -O3 potrebbe creare problemi di non meglio specificata stabilità... 
è vero?)?
Grazie
Here

Mi ha detto un amico, quindi non ho notizie di prima mano, che qualche 
istruzione potrebbe essere droppata durante la compilazione. A suo dire, 
in fase di debug non riusciva a trovare alcuni incrimenti... Mah...
A me ha sempre funzionato comunque.
Ciao
Luigi


Questo non vuol dire che non ci fossero. Notoriamente il codice ottimizzato
viene riorganizzato e non ha sempre corrispondenza riga per riga con il
sorgente, anche se il risultato funzionalmente e' equivalente.
Alessandro.

 sorgente, anche se il risultato funzionalmente e' equivalente.
Pienamente d'accordo!!!! Infatti a me funziona tutto. Comunque il mio 
amico per quanto ne so, non è fesso, ed il codice che produce non è un 
semplice "Hello World!".
Luigi

 
Ah! Potrei aggiungere anche che essendo il server in questione un server 
"finale" non ci dovrebbero essere necessità di debug o di test particolari!
Premesso che, seppur volendo, al momento non ho il tempo di approfondire 
molto la programmazione in C, avete qualche risorsa da indicarmi 
relativamente alle impostazioni di compilazione che sia un po' più 
"semplice" del classico man?
TNX

 è vero?)?
Da quanto ne so io -O3 e' l'ultimo livello per cui e' garantita la 
stabilita'... oltre -O4...-O9 potrebbero esserci dei problemi. Poi il 
-mcpu=i686 e' inutile perche' se specifichi l'architettura (-march=i686) 
sottintendi che hai un i686. Volendo puoi essere piu' specifico per la 
macchina, stile -march=athlon-xp o -march=pentium4 (man gcc anche se e' 
un po' una giungla).
Da qualche parte avevo sentito dire che per le architetture x86 
l'opzione di compilazione migliore era -Os (che cerca di produrre il 
codice piu' piccolo possibile) e questo perche' il collo di bottiglia 
nell'architettura x86 e' la banda della memoria.... pero' non so fino a 
che punto siano fondate queste cose...
Ciao
Scola


ovvio. altrimenti che ottimizzazioni sono?

 che punto siano fondate queste cose...
non è sempre detto che l'ottimizzazione per la dimensione sia la soluzione
migliore. Certe volte è meglio srotolare i cicli. Inoltre conviene
sprecare della memoria per guadagnare negli allineamenti.

Ciao Ottavio!

 Ciao Ottavio!
ehm... ciao!
...
...
...
scusa... ci conosciamo? Non è cattiveria, è solo che mi risulta difficile
associare i nomi alle persone..... :-)

 associare i nomi alle persone..... :-)
Andiamo, questa scusa si usa solo con le ragazze... :-P
bye,
-- 
   Piergiorgio Sartor

 Andiamo, questa scusa si usa solo con le ragazze... :-P
no no, delle ragazze mi ricordo :-)


Comunque ero in mail list di hurd... Solo che alla fine mi sono un po' 
scocciato di come si mettevano le cose a casa GNU... in più non ero 
molto presente fisicamente...
Ciao!