Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
TIP: Flag -Os
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

Goto page 1, 2  Next  
Reply to topic    Gentoo Forums Forum Index Forum italiano (Italian) Risorse italiane (documentazione e tools)
View previous topic :: View next topic  
Author Message
akiross
Veteran
Veteran


Joined: 02 Mar 2003
Posts: 1170
Location: Mostly on google.

PostPosted: Sun Jun 26, 2005 12:23 am    Post subject: TIP: Flag -Os Reply with quote

Salve

E' da un po' che manco, purtroppo la mia workstation linux e' rotta, e attualmente sono su macosx, non posto quindi su questo forum (ma i problemi ci sono anche qui...), ma vedo che c'e' un sacco di gente che non conoscevo (nuovi?) che non sanno cercare prima di postare :lol: mod non vi invidio ;)

Comunque stavo leggendo un testo e ho trovato una cosa interessante per noi gentooniani. Arriva da kerneltrap, quindi suppongo sia affidabile e il ragionamento fila.

Quote:
Rob, one thing you may not have noticed since you haven't been following
the list for a while is that with the current generation of computers size
frequently translates directly into speed and a lot of the time honored
performance tricks that trade size for fewer commands executed end up
being losses.

this can be seen by compiling code with -O2 and with -Os and frequently
the -Os will actually be faster.


Che tradotto e riassunto dice: spesso la lunghezza del codice e' proporzionale alla velocita': essendoci meno codice da eseguire le performance aumentano. Difatti si noti che spesso -Os e' anche piu' veloce di -O2 (parlando di codice compilato)

Magari, anzi quasi sicuramente, si era parlato di questo, ma onestamente ricordavo che nel forum -O2 era tuttosommato la soluzione piu' diffusa.

Ecco perche' posto questo tip: magari questa considerazione dell'usare -Os sfugge a diversa gente. Io onestamente sapevo che poco codice e' spesso piu' efficiente di tanto codice, ma non avevo mai pensato di applicarlo ad Os.

Quindi posto questo tip: spero che qualcuno lo provi (io non avendo gentoo non sono utile :() e dica se effettivamente conviene.

Da una ricerca proprio veloce non mi sembrava che ci fossero post sull'argomento Os, se ce ne sono (come e' probabile) vi prego di scusarmi.

Ciauz

PS: Mi spiace di essere mancato al gentoo pub di ieri, ma dovevo uscire a cena... sara' per la prossima volta ;)
_________________
Libera scienza in libero stato.
Horizon of Events
Back to top
View user's profile Send private message
.:deadhead:.
Advocate
Advocate


Joined: 25 Nov 2003
Posts: 2963
Location: Milano, Italy

PostPosted: Sun Jun 26, 2005 9:44 am    Post subject: Reply with quote

Fà bene ogni tanto riproporre buoni consigli. Uno dei più frequenti flame che si possano scatenare su gentoo è quello relativo a quali siano le ottimizzazioni migliori per la propria macchina.

Lungi da me entrar in argomento, vorrei porre alla vs. attenzione pochi fatti, affinche possiate poi compiere una scelta consapevole.

1) maggiori ottimizzazione = maggior dimensione su disco = maggior tempo nel leggere tutto il binario
2) maggiori ottimizzazioni != maggiori prestazioni [certe ottimizzazioni portano dei reali benefici solo in rarissimi casi, per il resto ingrossano l'exe e ne riducono l'efficienza]

Premesso ciò andiamo a leggere sul manuale di GCC [quello fa testo , non il cuggino dell'ammico].

Scegliete la versione di GCC [di default è la 3.3.5] che usate ed andate alla sezione Optimize Options.

Leggendo le prime righe ci imbattiamo nella spiegazione dei vari -O [O di oronzo] ed in particolare
Quote:
-Os
Optimize for size. -Os enables all -O2 optimizations that do not typically increase code size. It also performs further optimizations designed to reduce code size.

-Os disables the following optimization flags:

-falign-functions -falign-jumps -falign-loops
-falign-labels -freorder-blocks -fprefetch-loop-arrays

Quindi osserviamo come Os non sia altro che un -O2 messo a dieta. Per vostra cultura vi suggerisco di leggervi tutta la pagina e di confrontare le varie serie di cflags che magari avete trovato in giro alla ricerca della perfetta ottimizzazione. Come vedete ogni ottimizzazione è spiegata in dettaglio e viene specificato anche in quale -O[0,1,2,3,s] è già inserita. Errore comune è quello di crear cflags ridondanti, ossia scegliere ad es -O3 e poi specificare nuovamente opzioni già sottointese.

Un altro aspetto che molti scordano, nella folle ricerca dell'ottimizzazione perfetta è che cmq tutti gli exe creati andranno a finire su un FS che gioca un ruolo molto importante all'interno dello scenario prestazionale. Anche qui, l'uso di -Os associato ad un FS di tipo reiser [il 3 già offre ottime prestazioni, il 4 è un fulmine, ma non ancora inserito nel kernel ufficiale] posson dare prestazioni di riguardo.

that's all folks :D
_________________
Proudly member of the Gentoo Documentation Project: the Italian Conspiracy ! ;)
Back to top
View user's profile Send private message
!equilibrium
Bodhisattva
Bodhisattva


Joined: 06 Jun 2004
Posts: 2109
Location: MI/BG/LC

PostPosted: Sun Jun 26, 2005 10:14 am    Post subject: Reply with quote

e infine, aggiungerei, per i più smaliziati che voglio un fine tuning estremo, consiglio caldamente acovea, i risultati sono stupefacenti
_________________
Arch Tester for Gentoo/FreeBSD
Equilibrium's Universe

all my contents are released under the Creative Commons Licence by-nc-nd 2.5
Back to top
View user's profile Send private message
.:deadhead:.
Advocate
Advocate


Joined: 25 Nov 2003
Posts: 2963
Location: Milano, Italy

PostPosted: Sun Jun 26, 2005 10:41 am    Post subject: Reply with quote

Ero tentato di aggiungere una sezione al mio post su acovea, ma mi sembrava eccessivo. Ora dopo un periodo di stop, il sito è tornato up, ha aggiornato i SW ed ha fatto nuovi test: quell'uomo è troppo il migliore :-) Quanto prima stampo tutto e poi leggo!
_________________
Proudly member of the Gentoo Documentation Project: the Italian Conspiracy ! ;)
Back to top
View user's profile Send private message
Dr.Dran
l33t
l33t


Joined: 08 Oct 2004
Posts: 766
Location: Imola - Italy

PostPosted: Sun Jun 26, 2005 1:19 pm    Post subject: Reply with quote

Ragazzi leggete questo post, il dubbio sull'opzione Os mi era venuti anche a me in linea di principo può essere ottimale, però vi invito a leggere tutto questo post, è olto interessante:

https://forums.gentoo.org/viewtopic-p-2314776.html

Ciauz :D

P.S: Ditemi che ne pensate
Back to top
View user's profile Send private message
!equilibrium
Bodhisattva
Bodhisattva


Joined: 06 Jun 2004
Posts: 2109
Location: MI/BG/LC

PostPosted: Sun Jun 26, 2005 2:21 pm    Post subject: Reply with quote

.:deadhead:. wrote:
Ero tentato di aggiungere una sezione al mio post su acovea, ma mi sembrava eccessivo. Ora dopo un periodo di stop, il sito è tornato up, ha aggiornato i SW ed ha fatto nuovi test: quell'uomo è troppo il migliore :-) Quanto prima stampo tutto e poi leggo!


io uso la nuova versione e i nuovi tools da un po, davvero notevole come software, ovviamente quando fai un test di compilazione con acovea su pacchetti grossi e ti fa 15/30 passaggi di compilazioni non ti passa +, ma ne vale la pena credimi ;)
_________________
Arch Tester for Gentoo/FreeBSD
Equilibrium's Universe

all my contents are released under the Creative Commons Licence by-nc-nd 2.5
Back to top
View user's profile Send private message
!equilibrium
Bodhisattva
Bodhisattva


Joined: 06 Jun 2004
Posts: 2109
Location: MI/BG/LC

PostPosted: Sun Jun 26, 2005 2:41 pm    Post subject: Reply with quote

DranXXX wrote:
Ragazzi leggete questo post, il dubbio sull'opzione Os mi era venuti anche a me in linea di principo può essere ottimale, però vi invito a leggere tutto questo post, è olto interessante:

https://forums.gentoo.org/viewtopic-p-2314776.html

Ciauz :D

P.S: Ditemi che ne pensate


sulla questione dell' -Os e -O2 ne parlai parecchio tempo fa in un thread, e dissi esattamente quello che sostiene moocha, cioè che -Os è pensato principalmente per quei processori che non hanno una cache molto alta, come i vecchi P1 P2 K5/6 Cyrix VIA, e quindi tale opzione non dovrebbe essere usata con gli attuali e + moderni processori; ma venni bacchettato + volte come eretico :lol: :lol: :lol:

comunque il thread che hai linkato è molto interessante, ho scoperto una CFLAGS di cui ignoravo l'esistenza e finalmente mi ha fatto chiarezza sul -fomit-frame-pointer visto che ne ho sentite di cotte e di crude a riguardo :)
_________________
Arch Tester for Gentoo/FreeBSD
Equilibrium's Universe

all my contents are released under the Creative Commons Licence by-nc-nd 2.5
Back to top
View user's profile Send private message
Dr.Dran
l33t
l33t


Joined: 08 Oct 2004
Posts: 766
Location: Imola - Italy

PostPosted: Sun Jun 26, 2005 3:33 pm    Post subject: Reply with quote

Beh vedi cercavo anche io delle risposte e alla fine le ho trovate, perchè comunque la tendenza ad avere una distro a 360° come Gentoo ti porta all'esagerazione sulla ricerca di ottimizzazioni, che però magari sono troppe e inutili, il chè provoca solo un allungamento dei tempi di compilazione a scapito di performance e stabilità :wink:

Comunque io che ho un doppio athlon MP utilizzo -Os però sul desktop di mio fratello che ha un PIV utilizzo con soddisfazione -O2

Ciauz :D
Back to top
View user's profile Send private message
akiross
Veteran
Veteran


Joined: 02 Mar 2003
Posts: 1170
Location: Mostly on google.

PostPosted: Sun Jun 26, 2005 3:40 pm    Post subject: Reply with quote

DarkAngel76 wrote:

sulla questione dell' -Os e -O2 ne parlai parecchio tempo fa in un thread, e dissi esattamente quello che sostiene moocha, cioè che -Os è pensato principalmente per quei processori che non hanno una cache molto alta, come i vecchi P1 P2 K5/6 Cyrix VIA, e quindi tale opzione non dovrebbe essere usata con gli attuali e + moderni processori; ma venni bacchettato + volte come eretico :lol: :lol: :lol:


A dire il vero sull'articolo che leggevo Os veniva osannato proprio perche' aiutava a sfruttare la cache nei computer, e si parlava di computer moderni.

Ciauz
_________________
Libera scienza in libero stato.
Horizon of Events
Back to top
View user's profile Send private message
Dr.Dran
l33t
l33t


Joined: 08 Oct 2004
Posts: 766
Location: Imola - Italy

PostPosted: Sun Jun 26, 2005 4:20 pm    Post subject: Reply with quote

Certamente, il codice ottimizzato per le dimensioni riduce i tempi di loading, ma non è detto che sia performante, infatti ho discusso molto con moocha sulla questione e alla fine in base ad esperienze personali su varie architetture abbiamo concluso che comunque le ottimizzazioni + performati sono le seguenti:

Per processori non DualCore e non SMP PIV e Athlon

Code:
CFLAGS=-O2 -march=athlon-mp -fomit-frame-pointer -momit-leaf-frame-pointer -fno-ident -pipe


Per processori DualCore, SMP, embedded e P1 P2 K5/6 Cyrix VIA

Code:
CFLAGS=-Os -march=athlon-mp -fomit-frame-pointer -momit-leaf-frame-pointer -fno-ident -pipe


N.B. Queste sono riferite esclusivamente alla versione stabile del gcc 3.3.5

Vi riporto velocemente cosa servono le seguenti ottimizzazioni:

Quote:
-fomit-frame-pointer = Don't keep the frame pointer in a register for functions that don't need one.
This avoids the instructions to save, set up and restore frame pointers; it also
makes an extra register available in many functions. *It also makes debugging
impossible on some machines.*
On some machines, such as the VAX, this flag has no effect, because the standard
calling sequence automatically handles the frame pointer and nothing is saved by
pretending it doesn't exist. The machine-description macro `FRAME_POINTER_REQUIRED'
controls whether a target machine supports this flag. *Note Register Usage:
(gccint)Registers. Enabled at levels `-O', `-O2', `-O3', `-Os'.

-momit-leaf-frame-pointer = Don't keep the frame pointer in a register for leaf functions. This avoids
the instructions to save, set up and restore frame pointers and makes an
extra register available in leaf functions. The option -fomit-frame-pointer
removes the frame pointer for all functions which might make debugging harder.

-fno-ident = Ignore the `#ident' directive.


Ciauz :D
Back to top
View user's profile Send private message
!equilibrium
Bodhisattva
Bodhisattva


Joined: 06 Jun 2004
Posts: 2109
Location: MI/BG/LC

PostPosted: Sun Jun 26, 2005 5:37 pm    Post subject: Reply with quote

DranXXX wrote:
Certamente, il codice ottimizzato per le dimensioni riduce i tempi di loading, ma non è detto che sia performante, infatti ho discusso molto con moocha sulla questione e alla fine in base ad esperienze personali su varie architetture abbiamo concluso che comunque le ottimizzazioni + performati sono le seguenti:


esatto, quello che ho sempre sostenuto io ed è comprovato dalle mie esperienze; ovviamente per un pc ad uso esclusivamente domestico tra -Os e -O2 non si avverte nessuna differenza di performance, viversa se si adotta su una workstation per raytracing un -Os si ottengono performance a dir poco penose (mentre la differenza tra -O2 e -O3 è apprezzabile solo su raytracing molto lunghi e complessi).

Code:
CFLAGS=-O2 -march=XXX -fomit-frame-pointer -momit-leaf-frame-pointer -fno-ident -pipe


è la stessa configurazione che uso io :)
comprovata e riconfermata da acovea in numerosi test (con qualche piccola variante sulle CFLAGS, ma di poco conto)
_________________
Arch Tester for Gentoo/FreeBSD
Equilibrium's Universe

all my contents are released under the Creative Commons Licence by-nc-nd 2.5
Back to top
View user's profile Send private message
Kernel78
Moderator
Moderator


Joined: 24 Jun 2005
Posts: 3654

PostPosted: Mon Jun 27, 2005 5:44 am    Post subject: Reply with quote

Scusate la mia ignoranza ma sto cercando di orientarmi in questa giungla di flag ....
Quote:
-fomit-frame-pointer = [cut] Enabled at levels `-O', `-O2', `-O3', `-Os'.

Magari il mio inglese non è il massimo ma mi sembra di capire che è una flag attiva in ogni livello di ottimizzazione e che definirla dopo un qualsiasi -Ox sia ridondante.
Sbaglio ?

piccolo OT ho provato ad emergere acovea ma lanciando sulla mia macchina
Code:
runacovea -config gcc33_pentium3.acovea -bench almabench.c
è riuscito ad arrivare alla fine ma nel mezzo ho notato che mi ha dato un errore e diceva di riportarlo come bug di gentoo solo che è scrollato in alto e mi sono perso il messaggio, sapete come posso scrollare da in una console per recuperare il messaggio ?
Back to top
View user's profile Send private message
gutter
Bodhisattva
Bodhisattva


Joined: 13 Mar 2004
Posts: 7162
Location: Aarau, Aargau, Switzerland

PostPosted: Mon Jun 27, 2005 5:57 am    Post subject: Reply with quote

Kernel78 wrote:

sapete come posso scrollare da in una console per recuperare il messaggio ?


Code:

[MAIUSC] + [PAGE UP]
[MAIUSC] + [PAGE DOWN]


EDIT: Sostituito [CTRL] con [MAIUSC]

Mi scuso ancora per l'errore.
_________________
Registered as User #281564 and Machines #163761
Back to top
View user's profile Send private message
Dr.Dran
l33t
l33t


Joined: 08 Oct 2004
Posts: 766
Location: Imola - Italy

PostPosted: Mon Jun 27, 2005 1:06 pm    Post subject: Reply with quote

Kernel78 wrote:
Scusate la mia ignoranza ma sto cercando di orientarmi in questa giungla di flag ....
Quote:
-fomit-frame-pointer = [cut] Enabled at levels `-O', `-O2', `-O3', `-Os'.

Magari il mio inglese non è il massimo ma mi sembra di capire che è una flag attiva in ogni livello di ottimizzazione e che definirla dopo un qualsiasi -Ox sia ridondante.
Sbaglio ?


Ehm... sbagli, la tua ignoranza non è sull'inglese, ma sul compilatore :wink: se leggi bene però nel manuale del gcc scoprirai che -fomit-frame-pointer nelle architetture x86 è disabilitato, perchè rende il codice difficile da "debuggare" e quindi visto che la maggioranza di noi non deve fare debug sul software che compila (a meno che non sia uno sviluppatore) per abilitarlo bisogna inserirlo nei flag generali :wink:

Ciauz

P.S. anche io ero caduto in questo dubbio, ma mi sono documentato e ho compreso :D
Back to top
View user's profile Send private message
Kernel78
Moderator
Moderator


Joined: 24 Jun 2005
Posts: 3654

PostPosted: Mon Jun 27, 2005 1:34 pm    Post subject: Reply with quote

DranXXX wrote:
Kernel78 wrote:
Scusate la mia ignoranza ma sto cercando di orientarmi in questa giungla di flag ....
Quote:
-fomit-frame-pointer = [cut] Enabled at levels `-O', `-O2', `-O3', `-Os'.

Magari il mio inglese non è il massimo ma mi sembra di capire che è una flag attiva in ogni livello di ottimizzazione e che definirla dopo un qualsiasi -Ox sia ridondante.
Sbaglio ?


Ehm... sbagli, la tua ignoranza non è sull'inglese, ma sul compilatore :wink:

ho solo l'imbarazzo della scelta tra le due :oops:

Quote:

se leggi bene però nel manuale del gcc scoprirai che -fomit-frame-pointer nelle architetture x86 è disabilitato, perchè rende il codice difficile da "debuggare" e quindi visto che la maggioranza di noi non deve fare debug sul software che compila (a meno che non sia uno sviluppatore) per abilitarlo bisogna inserirlo nei flag generali :wink:

Ciauz

P.S. anche io ero caduto in questo dubbio, ma mi sono documentato e ho compreso :D

Purtroppo ho una vita che risucchia il tempo che dovrei dedicare all'apprendimento di Linux a 360° e quindi non riesco a documentarmi su tutto :lol:
Leggendo la descrizione della flag in questione all'indirizzo http://gcc.gnu.org/onlinedocs/gcc-3.3.5/gcc/Optimize-Options.html#Optimize-Options si limita a dirmi a cosa serve e che su alcune macchine non ha effetto
Quote:
On some machines, such as the VAX, this flag has no effect, because bla bla bla
quindi per la scelta delle flag non mi basta leggere quella pagina ma devo andare anche altrove per cercare l'info che mi hai dato tu (a proposito dove la trovo ?).
Mi sembra una situazione non ottimale, a mio parere un particolare del genere dovrebbe essere descritto anche dove viene trattata la flag altrimenti uno potrebbe fidarsi della descrizione e si troverebbe qualcosa di inaspettato (non che muoia nessuno ...).
Back to top
View user's profile Send private message
Lucacri
Tux's lil' helper
Tux's lil' helper


Joined: 27 Jan 2005
Posts: 147
Location: 2a Curva di Lesmo!

PostPosted: Mon Jun 27, 2005 1:57 pm    Post subject: Reply with quote

Anche io ho avuto sempre il dubbio sul Os o O3..
Io uso Gentoo prevalentemente sul mio portatile hce ha un HD da 4200 giri. Tempo fa, durante il bootstrap, scelsi di usare cflags "estreme" (O3 con qualche cflag aggiuntiva), ma se qualcuno di voi mi potesse confermare che con un Os avrei prestazioni migliori...beh, l'emerge -e world sarebbe instantaneo =)
Back to top
View user's profile Send private message
GiRa
l33t
l33t


Joined: 07 Apr 2005
Posts: 717

PostPosted: Mon Jun 27, 2005 2:01 pm    Post subject: Reply with quote

A me pare molto chiara la pagina relativa alle ottimizzazioni di GCC, se poi uno non sa cosa sono è ben altro discorso.

Consideriamo che il manuale sarebbe scritto per uno sviluppatore.
Back to top
View user's profile Send private message
Kernel78
Moderator
Moderator


Joined: 24 Jun 2005
Posts: 3654

PostPosted: Mon Jun 27, 2005 2:37 pm    Post subject: Reply with quote

GiRa wrote:
A me pare molto chiara la pagina relativa alle ottimizzazioni di GCC, se poi uno non sa cosa sono è ben altro discorso.

Consideriamo che il manuale sarebbe scritto per uno sviluppatore.

beh, io sono uno sviluppatore e il problema è che anche a me quella pagina sembra chiarissima e se mi dice che una flag è abilitata con ogni flag -Ox mi immagino che sarebbe ridondate definirla ancora

es.
Code:
-O2 -fomit-frame-pointer
visto che mi viene specificato (come ho anche riportato sopra)
Quote:
-fomit-frame-pointer = [cut] Enabled at levels `-O', `-O2', `-O3', `-Os'.
mentre stando a quanto mi ha detto DranXXX questa flag deve essere specificata su macchine x86 anche se esiste già un livello di ottimizzazione cosa che non sono riuscito ad evincere dalla pagina, se tu sei riuscito a capirlo da quella pagina mi spieghi cosa ti ha aiutato a capirlo ?
Back to top
View user's profile Send private message
Dr.Dran
l33t
l33t


Joined: 08 Oct 2004
Posts: 766
Location: Imola - Italy

PostPosted: Mon Jun 27, 2005 2:48 pm    Post subject: Reply with quote

@Kernel78

Bene dunque anche io ho fatto le tue stesse domande e ti rimando ai link per una risposta:
https://forums.gentoo.org/viewtopic-t-318191-postdays-0-postorder-asc-start-0.html#2467765

Beh le risposte non mi anno proprio soddisfatto e allora ho fatto come hai fatto tu e sono andato sfogliare il manuale:
http://gcc.gnu.org/onlinedocs/gcc-3.3.5/gcc/Optimize-Options.html#Optimize-Options

se noti nella parte che citi:
Quote:
On some machines, such as the VAX, this flag has no effect, because bla bla bla


Poco dopo il bla bla bla viene inviata proprio un link insteresante dove spiega alcune funzioni di alcuni registri tra cui quelli di controllo dell'80387 e allora mi sono detto tiriamo fuori il vecchio manualone dell'80586 e li ho trovato alcune risposte e credo di averne capito il motivo :wink:
Diciamo che per chi non ha mai studiato architettura dei calcolatori e dei compilatori, la cosa non è immediata da comprendere e io sono la persona meno adatta a introdurre la questione, però l'opzine permette di ottimizzare il codice riducendo l'utilizzo dei registri, disabilitando i frame pointer quando non servono, ne risulta un codice + snello e veloce, però anche + complesso da debuggare :wink:

Probabilmente non sono stato chiaro e questo me ne rendo conto, però per approfondimenti si potrebbe aprire un thread sul forum e la cosa potrebbe saltare fuori interessante... :D

EDIT: P.S. Ovviemente sul manualone non c'è scritto specificatamente che nel gcc l'opzione è disabilitata di default, ma mi sono studiato cosa è un frame pointer e come funziona, e ci ho ragionato un pò sopra, però tecnicamente non credo di fornirti una definizione esauruente e quindi ho chiesto in giro per poterti dare una risposta chiara e concisa... tutto qui è una questione di architettura non di software :wink:
Back to top
View user's profile Send private message
Kernel78
Moderator
Moderator


Joined: 24 Jun 2005
Posts: 3654

PostPosted: Mon Jun 27, 2005 3:10 pm    Post subject: Reply with quote

Intanto ti ringrazio per la disponibilità a condividere le tue conoscenze :wink:
DranXXX wrote:
@Kernel78

Bene dunque anche io ho fatto le tue stesse domande e ti rimando ai link per una risposta:
https://forums.gentoo.org/viewtopic-t-318191-postdays-0-postorder-asc-start-0.html#2467765

Beh le risposte non mi anno proprio soddisfatto e allora ho fatto come hai fatto tu e sono andato sfogliare il manuale:
http://gcc.gnu.org/onlinedocs/gcc-3.3.5/gcc/Optimize-Options.html#Optimize-Options

se noti nella parte che citi:
Quote:
On some machines, such as the VAX, this flag has no effect, because bla bla bla


Poco dopo il bla bla bla viene inviata proprio un link insteresante dove spiega alcune funzioni di alcuni registri tra cui quelli di controllo dell'80387 e allora mi sono detto tiriamo fuori il vecchio manualone dell'80586 e li ho trovato alcune risposte e credo di averne capito il motivo :wink:

Quel link non l'avevo nemmeno preso in considerazione visto che la parte che ho citato dice che quel flag non ha effetto su alcune macchine (presumo sia inteso come architetture di macchine) quindi ho supposto che se x86 fosse tra quelle macchine si potrebbe anche ripeterlo oltre al -Ox ma non funzionerebbe cmq, per questo non ho ritenuto di approfondire.

Quote:

Diciamo che per chi non ha mai studiato architettura dei calcolatori e dei compilatori, la cosa non è immediata da comprendere e io sono la persona meno adatta a introdurre la questione, però l'opzine permette di ottimizzare il codice riducendo l'utilizzo dei registri, disabilitando i frame pointer quando non servono, ne risulta un codice + snello e veloce, però anche + complesso da debuggare :wink:

Probabilmente non sono stato chiaro e questo me ne rendo conto, però per approfondimenti si potrebbe aprire un thread sul forum e la cosa potrebbe saltare fuori interessante... :D

EDIT: P.S. Ovviemente sul manualone non c'è scritto specificatamente che nel gcc l'opzione è disabilitata di default, ma mi sono studiato cosa è un frame pointer e come funziona, e ci ho ragionato un pò sopra, però tecnicamente non credo di fornirti una definizione esauruente e quindi ho chiesto in giro per poterti dare una risposta chiara e concisa... tutto qui è una questione di architettura non di software :wink:

Quello che mi continua a lasciare perplesso è che io trovo che la descrizione del flag è chiara nel descriverene il funzionamento (e anche tu l'hai descritto in maniera chiara e comprensibile IMO) ma anche rileggendo tutta quella pagina l'unica cosa che ho trovato è questa
Quote:
-O also turns on -fomit-frame-pointer on machines where doing so does not interfere with debugging.
che in parte coincide con quello che mi hai detto.
Io mi chiedo quanto gli costava specificare che anche era la stessa cosa anche per gli altri livelli di ottimizzazione ...
Back to top
View user's profile Send private message
Dr.Dran
l33t
l33t


Joined: 08 Oct 2004
Posts: 766
Location: Imola - Italy

PostPosted: Mon Jun 27, 2005 3:20 pm    Post subject: Reply with quote

Quote:
Io mi chiedo quanto gli costava specificare che anche era la stessa cosa anche per gli altri livelli di ottimizzazione ...


Beh quello l'ho pensato pure io anche la prima volta... comunque non è un problema per me condividere conoscenze, e il forum è nato per quello :wink: non certo per i soliti cafoni che credono di essere dei guru e non ti danno risposte vere o gererano spam gratuitamente :D
Quindi la tua curiosità per me è stimolante, visto che mi sembra giusto che i dubbi vengano chiariti :wink:

P.S. Per ora io ti suggerisco di utilizzare quella ottimizzazione e poi appena ho i documenti e i link ti tengo aggiornato :wink:
Almeno posso dopo dire che quello che ho cercato di capire facendo una sorta di "reverse engineering" sia corretto... sarebbe una grande soddisfazione per me che abitualmente svolgo un lavoro che proprio di soddisfazioni non ne da... :?
Back to top
View user's profile Send private message
Kernel78
Moderator
Moderator


Joined: 24 Jun 2005
Posts: 3654

PostPosted: Mon Jun 27, 2005 3:30 pm    Post subject: Reply with quote

DranXXX wrote:
P.S. Per ora io ti suggerisco di utilizzare quella ottimizzazione e poi appena ho i documenti e i link ti tengo aggiornato :wink:
Almeno posso dopo dire che quello che ho cercato di capire facendo una sorta di "reverse engineering" sia corretto... sarebbe una grande soddisfazione per me che abitualmente svolgo un lavoro che proprio di soddisfazioni non ne da... :?

Tanto già la usavo (l'avevo vista anche nella guida per l'installazione) ma una volta visto il mauale gcc mi sono chiesto se serviva tenerla o se fosse solo ridondante.
Tanto (e sentiti libero di confermare o smentire ciò che stò per dire :wink: ) anche se ripeto la stessa flag più volte non succede nulla di male, spero ...
Back to top
View user's profile Send private message
Lucacri
Tux's lil' helper
Tux's lil' helper


Joined: 27 Jan 2005
Posts: 147
Location: 2a Curva di Lesmo!

PostPosted: Mon Jun 27, 2005 3:54 pm    Post subject: Reply with quote

Ragazzi, cosi per sfizio, ho fatto girare acovea sul mio portatile Centrino 1.7Ghz Dothan (2mb di cache)
Questo è il risultato :)
Code:
-O1 -march=pentium-m -fno-thread-jumps -fno-cprop-registers -fno-if-conversion2 -fno-delayed-branch -fno-crossjumping -foptimize-sibling-calls -fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations -fschedule-insns2 -fregmove -fstrict-aliasing -fdelete-null-pointer-checks -freorder-functions -falign-loops -falign-labels -falign-functions -finline-functions -frename-registers -fprefetch-loop-arrays -freduce-all-givs -fpeel-loops -fbranch-target-load-optimize2 -mieee-fp -mno-push-args -maccumulate-outgoing-args -minline-all-stringops -fno-math-errno -fno-trapping-math -ffinite-math-only -fno-signaling-nans -finline-limit=500


Questa secondo acovea è la migliore ottimizzazione possibile 8O 8O 8O 8O
Back to top
View user's profile Send private message
Kernel78
Moderator
Moderator


Joined: 24 Jun 2005
Posts: 3654

PostPosted: Mon Jun 27, 2005 4:41 pm    Post subject: Reply with quote

Lucacri wrote:
Ragazzi, cosi per sfizio, ho fatto girare acovea sul mio portatile Centrino 1.7Ghz Dothan (2mb di cache)
Questo è il risultato :)
Code:
-O1 -march=pentium-m -fno-thread-jumps -fno-cprop-registers -fno-if-conversion2 -fno-delayed-branch -fno-crossjumping -foptimize-sibling-calls -fcse-follow-jumps -fcse-skip-blocks -fexpensive-optimizations -fschedule-insns2 -fregmove -fstrict-aliasing -fdelete-null-pointer-checks -freorder-functions -falign-loops -falign-labels -falign-functions -finline-functions -frename-registers -fprefetch-loop-arrays -freduce-all-givs -fpeel-loops -fbranch-target-load-optimize2 -mieee-fp -mno-push-args -maccumulate-outgoing-args -minline-all-stringops -fno-math-errno -fno-trapping-math -ffinite-math-only -fno-signaling-nans -finline-limit=500


Questa secondo acovea è la migliore ottimizzazione possibile 8O 8O 8O 8O

Cos'ha che non va ?
Aproposito che bench hai usato ?
Back to top
View user's profile Send private message
mrfree
Veteran
Veteran


Joined: 15 Mar 2003
Posts: 1303
Location: Europe.Italy.Sulmona

PostPosted: Mon Jun 27, 2005 5:35 pm    Post subject: Reply with quote

Lucacri wrote:
Questa secondo acovea è la migliore ottimizzazione possibile 8O 8O 8O 8O


Prova a dare uno sguardo ad un mio vecchio post al riguardo... c'è anche qualche parere di alcuni gentoo devs sull'extreme cglagging :)
_________________
Please EU, pimp my country!

ICE: /etc/init.d/iptables panic
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Forum italiano (Italian) Risorse italiane (documentazione e tools) All times are GMT
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum