# Que optimizações é k o ppl usa ?

## MetalGod

Por acaso gostava de saber k optimizações eh k o ppl usa... tipo façam comentarios pros e contras de usarem essas optimizações...  :Smile: 

Bem as minhas optimizaçoes sao as seguintes...   :Cool: 

```

CHOST="i686-pc-linux-gnu"

CFLAGS="-march=pentium3 -O3 -pipe -fomit-frame-pointer"

CXXFLAGS="${CFLAGS}"

```

Eu noto que por vezes a CFLAG "-O3" por vezes eh bastante violenta e causa erros de codigo. Quando isso acontece uso "-O2" k que a optimizção aconselhada antes de submeter bugs...

----------

## RoadRunner

Eu uso precisamente isso em todas as máquinas (menos no servidor, onde não osu o -fomit-frame-pointer) e nunca tive problemas devido a flags. pelo menos problemas que mudando de -O3 para -O2 resolvessem.

----------

## AngusYoung

```
CFLAGS="-march=pentium3 -O3 -pipe -mmmx -msse -mfpmath=sse -fforce-addr -fforce-mem -fomit-frame-pointer -falign-functions -fprefetch-loop-arrays"
```

e 

```
CFLAGS="-march=athlon-tbird -O3 -pipe -mmmx -m3dnow -fforce-addr -fforce-mem -fomit-frame-pointer -falign-functions -fprefetch-loop-arrays"
```

A propósito, nunca tive problemas com -03. Inclusive o Open Office foi compilado com essas CFLAGS.

Abraços

----------

## MetalGod

[quote="AngusYoung"]

```
CFLAGS="-march=pentium3 -O3 -pipe -mmmx -msse -mfpmath=sse -fforce-addr -fforce-mem -fomit-frame-pointer -falign-functions -fprefetch-loop-arrays"
```

Eu por acaso já pensei em usar as CFLAGS "-mmmx -msse" mas pelo k sei tive a ler alguns dos essas flags sao activadas directamento logo quando "-march=pentium3"   :Smile: 

----------

## v

Eu usa estas:

```
CFLAGS="-march=athlon -O2 -pipe -fomit-frame-pointer"
```

o normal excepto o -O2  :Laughing: 

----------

## AngusYoung

[quote="MetalGOD"] *AngusYoung wrote:*   

> 
> 
> ```
> CFLAGS="-march=pentium3 -O3 -pipe -mmmx -msse -mfpmath=sse -fforce-addr -fforce-mem -fomit-frame-pointer -falign-functions -fprefetch-loop-arrays"
> ```
> ...

 

Pois também já ouvi muitas discussões sobre -march=pentium3 e -mmmx -msse serem ou não redundantes. Porém até hoje não encontrei nenhum artigo técnico que tirasse a dúvida ...

----------

## RoadRunner

Ver aqui para uma lista das opmimizações com a opção -O? e ver aqui para a lista de opções para os parametros específicos da arquitectura x86.

----------

## DataShark

 *Quote:*   

> 
> 
> emerge info Portage 2.0.48 (default-x86-1.4, gcc-3.3, glibc-2.3.2-r2)
> 
> =================================================================
> ...

 

juntamente com NPTL (kernel mm-sources) excepto ainda alguns problemas com algumas packages que não apreciam as optimizações SSE so far so good ... 

P.S. : já sei que nas CFLAGS há algumas redundâncias ... laziness

----------

## MetalGod

Tanta coisa  :Smile: 

tenho umas criticas para as CFLAGS pois ao k parece o -march=pentium4 n eh muito famoso     :Confused: 

code]-mmmx -msse -msse2 [/code] tb parece k pelo k andei a investigar sao default no -march=pentiumxxx

----------

## meetra

 *AngusYoung wrote:*   

>  *MetalGOD wrote:*   
> 
> ```
> CFLAGS="-march=pentium3 -O3 -pipe -mmmx -msse -mfpmath=sse -fforce-addr -fforce-mem -fomit-frame-pointer -falign-functions -fprefetch-loop-arrays"
> ```
> ...

 

gcc $CFLAGS -v file.c

e jah agora

```
CHOST="i586-pc-linux-gnu"

CFLAGS="-march=pentium-mmx -O3 -fomit-frame-pointer -pipe"

CXXFLAGS="-march=pentium-mmx -O3 -fomit-frame-pointer -pipe"

```

----------

## DataShark

 *MetalGOD wrote:*   

> Tanta coisa 
> 
> tenho umas criticas para as CFLAGS pois ao k parece o -march=pentium4 n eh muito famoso    
> 
> code]-mmmx -msse -msse2 [/code] tb parece k pelo k andei a investigar sao default no -march=pentiumxxx

 

o -march=mpentium4 dava problemas (nomeadamente com as funções matemáticas) na glibc ... tanto quanto se sabe esses problemas estão resolvidos... e a glibc passa *todos*  os testes quando compilada com o gcc 3.3. ...

ver a propósito: http://gcc.gnu.org/gcc-3.3/changes.html ...

Em suma, ter lido o subject do post não tinha sido má ideia ...

----------

## DataShark

 *meetra wrote:*   

>  *AngusYoung wrote:*    *MetalGOD wrote:*   
> 
> ```
> CFLAGS="-march=pentium3 -O3 -pipe -mmmx -msse -mfpmath=sse -fforce-addr -fforce-mem -fomit-frame-pointer -falign-functions -fprefetch-loop-arrays"
> ```
> ...

 

vê : http://gcc.gnu.org/onlinedocs/gcc-3.3/gcc/i386-and-x86-64-Options.html#i386%20and%20x86-64%20Options e http://gcc.gnu.org/onlinedocs/gcc-3.3/gcc/Optimize-Options.html#Optimize%20Options    ... 

(se estiveres a usar outra versão do gcc é só mudar a versão na URL ...)

Um abraço ...

----------

## MetalGod

Bem...

```

Portage 2.0.48-r1 (default-x86-1.4, gcc-3.2.3, glibc-2.3.2-r1)

=================================================================

System uname: 2.5.70-mm4 i686 AMD Athlon(tm) XP 2000+

GENTOO_MIRRORS="http://www.mirror.ac.uk/sites/www.ibiblio.org/gentoo http://gent                                                                                    

oo.oregonstate.edu http://www.ibiblio.org/pub/Linux/distributions/gentoo"

CONFIG_PROTECT="/etc /var/qmail/control /usr/kde/2/share/config /usr/kde/3/share                                                                                    

/config /usr/X11R6/lib/X11/xkb /usr/kde/3.1/share/config /usr/share/config"

CONFIG_PROTECT_MASK="/etc/gconf /etc/env.d"

PORTDIR="/usr/portage"

DISTDIR="/usr/portage/distfiles"

PKGDIR="/usr/portage/packages"

PORTAGE_TMPDIR="/var/tmp"

PORTDIR_OVERLAY=""

USE="x86 apm arts kde libg++ libwww mikmod motif quicktime spell xml2 gdbm berkd                                                                                    

b readline java guile tcpd pam esd X gtk tcltk ipv6 gnome 3dnow aalib avi bonobo                                                                                    

 cdr crypt cups curl dga directfb dvd encode flash gif gpm gtk2 imlib jpeg maild                                                                                    

ir mmx mozilla mpeg ncurses nls oggvorbis opengl oss pdflib perl png python qt s                                                                                    

dl slang sse ssl svga truetype usb xmms xv zlib"

COMPILER="gcc3"

CHOST="i686-pc-linux-gnu"

CFLAGS="-march=athlon-xp -O2 -pipe -fomit-frame-pointer"

CXXFLAGS="-march=athlon-xp -O2 -pipe -fomit-frame-pointer"

ACCEPT_KEYWORDS="x86 ~x86"

MAKEOPTS="-j2"

AUTOCLEAN="yes"

SYNC="rsync://rsync.gentoo.org/gentoo-portage"

FEATURES="sandbox ccache"

```

 :Wink: 

----------

## To

 *Quote:*   

> CFLAGS="-march=pentium3 -O3 -pipe -fomit-frame-pointer"
> 
> #CFLAGS="-march=pentium3 -mmmx -msse -msse2 -mfpmath=sse -O3 -pipe -fomit-frame-pointer -funroll-loops -frerun-cse-after-loop -frerun-loop-opt -falign-functions=4 -fschedule-insns2 -fforce-addr -fprefetch-loop-arrays -ffast-math"
> 
> # If you set a CFLAGS above, then this line will set your default C++ flags to
> ...

 

Já usei a linha que tenho comentada, mas ainda esta semana tive de mudar pq tinha erros a compilar util-linux e o gettext entre outros. Btw tb vi um post a dizer que o as flags "-mmmx -msse" são redundantes para march pentiumx.

Tó

----------

## lmpinto

 *To wrote:*   

>  *Quote:*   CFLAGS="-march=pentium3 -O3 -pipe -fomit-frame-pointer"
> 
> #CFLAGS="-march=pentium3 -mmmx -msse -msse2 -mfpmath=sse -O3 -pipe -fomit-frame-pointer -funroll-loops -frerun-cse-after-loop -frerun-loop-opt -falign-functions=4 -fschedule-insns2 -fforce-addr -fprefetch-loop-arrays -ffast-math"
> 
> # If you set a CFLAGS above, then this line will set your default C++ flags to
> ...

 

Também já tive uma parecida com essa (numa consola de 80 caracteres eram 3 linhas e meia), até fazer um 'man gcc', e ver que por exemplo o '-funroll-loops', o '-fprefetch-loop-arrays' e outras são automaticamente activadas quando usas -O3... De maneira que uma linha dessas impressiona, mas quando se vai a ver não faz muito mais do que a que usas agora  :Smile: 

Neste momento tenho: 

```
CFLAGS="-march=pentium4 -mcpu=pentium4 -O3 -pipe -fomit-frame-pointer -mmmx -msse -msse2 -mfpmath=sse,387  -fforce-addr"
```

Estou com problemas a compilar o libgtk-3.0.4 e o alsa-tools-0.9.4, mas já experimentei sem nenhumas optimizações (nem mesmo o -j2) e continua a dar erros. Logo, as que tenho vão continuar, pelo menos durante mais um tempo, até ter tempo de ler a manpage do gcc...

Agora queria saber porque raio é que o xfree-4.3.0-r3 me pede para fazer o downgrade para o gcc-3.2.3-r1...

----------

## MetalGod

well nice update

dp de muitos testes com a minha maquina fiquei por:

```

Portage 2.0.48-r1 (default-x86-1.4, gcc-3.2.3, glibc-2.3.2-r1)

=================================================================

System uname: 2.4.20-gentoo-r5 i686 AMD Athlon(tm) XP 2000+

GENTOO_MIRRORS="http://www.ibiblio.org/pub/Linux/distributions/gentoo"

CONFIG_PROTECT="/etc /var/qmail/control /usr/share/config /usr/kde/2/share/confi                                                                                      

g /usr/kde/3/share/config /usr/X11R6/lib/X11/xkb"

CONFIG_PROTECT_MASK="/etc/gconf /etc/env.d"

PORTDIR="/usr/portage"

DISTDIR="/usr/portage/distfiles"

PKGDIR="/usr/portage/packages"

PORTAGE_TMPDIR="/var/tmp"

PORTDIR_OVERLAY=""

USE="x86 apm arts kde libg++ libwww mikmod motif nls qt quicktime spell xml2 xv                                                                                       

gdbm berkdb readline guile tcpd pam esd X gtk gnome gtk2 3dnow sse ssl mmx aalib                                                                                      

 usb cups truetype avi bonobo cdr crypt dga dvd encode flash gif gpm imlib maild                                                                                      

ir java jpeg mozilla mpeg ncurses oggvorbis opengl oss pdflib perl png python sd                                                                                      

l slang svga xmms zlib"

COMPILER="gcc3"

CHOST="i686-pc-linux-gnu"

CFLAGS="-march=athlon-xp -O2 -pipe -ffast-math -mmmx -msse -m3dnow"

CXXFLAGS="-march=athlon-xp -O2 -pipe -ffast-math -mmmx -msse -m3dnow"

ACCEPT_KEYWORDS="x86 ~x86"

MAKEOPTS="-j2"

AUTOCLEAN="yes"

SYNC="rsync://rsync.gentoo.org/gentoo-portage"

FEATURES="sandbox ccache"

```

 :Wink: 

----------

## jig

 *lmpinto wrote:*   

> 
> 
> Também já tive uma parecida com essa (numa consola de 80 caracteres eram 3 linhas e meia), até fazer um 'man gcc', e ver que por exemplo o '-funroll-loops', o '-fprefetch-loop-arrays' e outras são automaticamente activadas quando usas -O3... 

 

 Olá!

 Podias-me indicar onde é que leste isto no manual do gcc? gcc3.3?

----------

## lmpinto

 *jig wrote:*   

>  *lmpinto wrote:*   
> 
> Também já tive uma parecida com essa (numa consola de 80 caracteres eram 3 linhas e meia), até fazer um 'man gcc', e ver que por exemplo o '-funroll-loops', o '-fprefetch-loop-arrays' e outras são automaticamente activadas quando usas -O3...  
> 
>  Olá!
> ...

 

Raios partam isto. Tanta flag que é activada com o -O3, e eu logo vou dar dois exemplos das poucas que não são.   :Embarassed: 

----------

## DataShark

 *lmpinto wrote:*   

>  *jig wrote:*    *lmpinto wrote:*   
> 
> Também já tive uma parecida com essa (numa consola de 80 caracteres eram 3 linhas e meia), até fazer um 'man gcc', e ver que por exemplo o '-funroll-loops', o '-fprefetch-loop-arrays' e outras são automaticamente activadas quando usas -O3...  
> 
>  Olá!
> ...

 

http://gcc.gnu.org/onlinedocs/gcc-3.3/gcc/  ou para os conservadores http://gcc.gnu.org/onlinedocs/gcc-3.2.3/gcc/

----------

## To

 *DataShark wrote:*   

> http://gcc.gnu.org/onlinedocs/gcc-3.3/gcc/  ou para os conservadores http://gcc.gnu.org/onlinedocs/gcc-3.2.3/gcc/

 

Conservadores ou que gostam de ter as maquinas com as versões mais estáveis:)

Tó

----------

