Esperimenti di compilazione

Da qualche giorno sto provando a compilare con particolari opzioni di GCC: -Os e -Wl,--as-needed. La prima dovrebbe abilita tutte le ottimizzazioni di -O2 tranne quelle che incrementano le dimensioni del del compilato, inoltre effettua ulteriori ottimizzazioni per ridurne le dimensioni.

La seconda opzione invece è per il linker (ld) in modo da omettere le librerie non direttamente richieste, ma solo quelle necessarie. Questa mia curiosità è nata da un articolo trovato su osnews.com dove si parlava di un notevole incremento di prestazioni usando -Wl,--as-needed, l'esempio era di gnome-terminal: compilato normalmente si porta le referenze di una cinquantina di librerie, in realtà ha bisogno di solo una decina di loro e, a quanto pare, compilando con -Wl,--as-needed, il programma si carica in molto meno tempo. Ho fatto quindi degli esperimenti con alcuni programmi, i tempi di caricamento non sono migliorati più di tanto, però in effetti ho notato che vengono caricati più velocemente.

Questi esperimenti li ho però fatti usando anche l'opzione -Os, non vorrei che il minor tempo di caricamento fosse dovuto alle ottimizzazioni di GCC: minore dimensione del binario, minor tempo di caricamento in memoria. Dovrò fare analisi più approfondite. Nel frattempo il mio amico DarkBrain ha compilato un kernel 2.6.x con -Os, beh, da allora ha 2fps in più su Unreal Tournament 2004... mica male!