[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [RiminiLUG-General] Resoconto serata 28/4/2010



Il 30/04/2010 21:53, Daniele Palumbo ha scritto:
[cut]
esempio di ieri per i rischi di gentoo: (ma non ne ho altri, praticamente) la versione 0.96 di clamav ha un bug che se compilato con il flag "-O3" va in segmentation fault.

sono d'accordo solo in parte

ogni upgrade è una variazione importante al sistema informativo ed e' per questo che prima di un upgrade di una macchina in produzione bisogna fare dei test in un ambiente controllato.

Un altro aspetto riguarda le ottimizzazioni del compilatore ...ovvero l' -O3 del quale parlavi. La stragrande maggioranza delle distribuzioni non usa le ottimizzazioni dei compilatori e pertanto alcuni problemi non vengono fuori ...aka il codice rimane intrinsecamente bacato.

Gentoo, tra le varie opzioni, ti permette di cambiare i parametri con i quali viene compilato il codice ...e vi faccio notare che alcuni software hanno dei problemi se vengono utilizzate ottimizzazioni pesanti.

Un esempio su tutti è rappresentato da openoffice:

--
        # Compile problems with these ...
        filter-flags "-funroll-loops"
        filter-flags "-fprefetch-loop-arrays"
        filter-flags "-fno-default-inline"
        filter-flags "-ftracer"
        filter-flags "-fforce-addr"

        filter-flags "-O[s2-9]"
--

questi sono i filtraggi che vengono fatti quando deve essere compilato openoffice su gentoo ...ovvero se avete le opzioni citate lui le toglie e compila il codice senza di esse.


Inoltre bisogna tenere presente che alcune ottimizzazioni sono dichiaratamente rischiose e non consigliate:

http://www.gentoo.org/doc/en/gcc-optimization.xml

la scritta in neretto dopo la sequela di problemi "Using -O3 is not recommended for gcc 4.x." deve far riflettere



un vantaggio del scegliere il livello di ottimizzazione a livello di compilatore è quello di poter creare anche una distro minimale con poco sforzo:

...se ho poco spazio disco posso compilare tutto con -Os ed avere dei binari ottimizzati per occuparare poche risorse disco / CPU cache ...notare che anche -Os puo' essere rischio con alcuni software perche' puo' produrre risultati inattesi


Quando si lavora sui compilatori in generale si puo' migliorare le performance globali ma si puo' anche incorrere in problemi strani ...pensate che flag come -O3 smontano anche i classi cicli trasformandoli in qualcosa di sequenziale ...e non e' proprio un cambiamento banale

buon man gcc a tutti


Christian