Compilers' Options

Vasilis Vasaitis vvas at hal.csd.auth.gr
Thu Apr 13 17:16:18 EEST 2000


On Thu, Apr 13, 2000 at 03:14:00PM +0300, Giorgos Keramidas wrote:
> On Thu, Apr 13, 2000 at 01:24:03PM +0300, Kissandrakis Giorgos wrote:
> > proteinomena flags gia optimization se Pentium Pro II/III gia ton
> > egcs --version
> > egcs-2.91.66
> > CFLAGS='-O9 -funroll-loops -ffast-math -malign-double -mcpu=pentiumpro
> > -march=pentiumpro -fomit-frame-pointer -fno-exceptions'
> > 
> > dont ask :)
> 
> <!-- keramida mpainei se evil-cc-freak mode kai bour na ask amesos  -->
> 
> Loipon.  Ola kala, as poume oti meta apo ta unrolls, kai ta inlines pou
> 8a sou kanei auto to pragma, kai kala mou twra tha einai pio kapos to
> teliko ektelesimo.  As poume oti glitoses kai ligo megethos, bgazontas
> to frame-pointer, kai glitonontas tis entoles
> 
> 	pushl %ebp		<--
> 	movl %esp,%ebp		<--
> 	...
> 	leave			<--

  Ε όχι και leave. Όποιος χρησιμοποιεί τέτοιες σύνθετες εντολές σε Pentium
και άνω θα έπρεπε να εκτελεστεί επιτόπου. Ο gcc πάντως δεν το κάνει.

> 	ret
> 
> sto body tou kathe function sou.  Einai kapos mia allagi sto size, den
> leo.  Alla afou tha se exei kanei kati fores megalutero to -O9, me ola
> ta inlines pou tha kanei akoma kai ekei pou isws den xreiazontai, ti na
> sou glitosei to -fomit-frame-pointer?

  Το -fomit-frame-pointer είναι κυρίως speed και όχι size optimization.
Ειδικά στην αρχιτεκτονική της Intel που οι καταχωρητές είναι περιορισμένοι,
ένας παραπάνω ελεύθερος είναι μεγάλη υπόθεση.

> Ase pou an to kaloskefteis, me tin cache pou exoun oi shmerinoi
> epejergastes, to na kaneis inline functions einai adikhma pou 8a eprepe
> na timoreitai me dis eis 8anaton.  Skepsou tin periptosi duo function
> pou kalountai se loop, kai kapoia apo autes kalei kai mia trith.  An
> tuxei kai oi treis xorane stin cache mazi me to loop, to cpu sou 'tis
> foraei, kai petaei'.  An kaneis unroll to loop omws, tote isws olo to
> loop, mazi me tis treis functions inlined ekei pou prepei mporei na min
> xoraei stin cache.  Tote ta cache-misses sou einai pio polla apo to na
> min eixes ka8olou optimizations :/

  Από την άλλη, από το να έχεις την max() σε κανονική συνάρτηση, ή να την
έχεις σε #define που τα παίζει όταν οι παραστάσεις έχουν παρενέργειες, ή να
γράφεις μόνος σου τον ?: κάθε φορά, είναι σαφώς καλύτερα να την έχεις
inline. Σε κάθε περίπτωση όμως, υποτίθεται ότι ο καλός προγραμματιστής ξέρει
πότε να ενεργοποιήσει τον διακόπτη, ανάλογα με τον κώδικα που έχει γράψει.

> Genika pantos xrhsimopoiwntas optimizations, den exo dei 'orath'
> diafora, se megala programmata (opws sendmail, mozilla, klp.) metaju
> -O2 kai -O6 h kati megalutero.  Mono to megethos eida na ginetai arketa
> megalutero!

  Όσο μεγάλα κι αν είναι, δεν είναι τα προγράμματα που έτσι κι αλλιώς θα
έπιαναν τον ατέλειωτο χρόνο του επεξεργαστή σου. Δες και το thread σχετικά
με τα CGI προγράμματα σε Perl ή C...

-- 
\  /_. _o|o _ \  /_. _ _.o_|_o _ 
 \/(_|_>|||_>  \/(_|_>(_|| |_|_> 
           __                                   
     _. _ /  \|_  _.|  _ _ _|  _.  _|_|_   _ ._ 
\/\/(_|_>| (|/| |(_||o(__>(_|o(_||_||_| |o(_||  
          \__                              _|   

--
linux-greek-users mailing list -- http://lists.hellug.gr




More information about the Linux-greek-users mailing list