Linuxtrent: Re: Compilare con Linux...

  • From: <matteoianeselli@xxxxxxxxxxx>
  • To: linuxtrent@xxxxxxxxxxxxxxxxx
  • Date: Sat, 4 Nov 2000 22:32:14 +0100

Mario Torre writes:

 > Pero' vorrei aggiungere, e correggetemi se sbaglio, che se per un
 > i686 gli allineamenti di memoria devono essere pari, per una
 > migliore ottimizzazione, allora un compilatore che non tiene questi
 > allineamenti ottimizza male il codice.
 > 
 > Anche se l'ottimizzazione del codice compilato dipende da tanti
 > fattori.

A distanza di un po' di tempo, vorrei aggiungere ancora una cosa (di
cui mi sono (tristemente) accorto solo oggi):

se mai compili del codice con il gcc con l'ottimizzatore, assicurati
di specificare anche ``-funroll-loops''. 

Incredibile ma vero, -O6 da solo (senza -funroll-loops) non induce lo
srotolamento dei cicli (almeno non sul "vecchio" gcc 2.91.66 che ho
io), e ti perdi per strada miglioramenti di prestazioni di ***un
ordine di grandezza*** (10 a 1 da alcuni test che ho fatto).

Indi per cui: specificare ``-funroll-loops'' quando possibile.

PS: per la cronaca, scopro anche che facendo lo srotolamento a mano di
un semplice loop (stile Duff's device, vedi il link sul Jargon file a
http://www.tuxedo.org/~esr/jargon/html/entry/Duff%27s-device.html),
ottengo risultati decisamente peggiori rispetto a quelli ottenuti
utilizzando -funroll-loops. 
-- 
Matteo Ianeselli  
matteoianeselli AT poboxes.com

-- 
Per disicriversi basta spedire un  messaggio con SOGGETTO
"unsubscribe" a mailto:linuxtrent-request@xxxxxxxxxxxxxxxxx
Gestione via web: http://freelists.dhs.org

Other related posts: