Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
sobre cflags
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index Spanish
View previous topic :: View next topic  
Author Message
thorero
Tux's lil' helper
Tux's lil' helper


Joined: 16 Apr 2003
Posts: 108
Location: gentoo-brain

PostPosted: Wed Nov 19, 2003 8:41 pm    Post subject: sobre cflags Reply with quote

Voi a reinstalar gentoo y tngo unas dudas, quiero exprimir al maximo la optimizacion, e visto estas cflags para Athlon XP 2000

CFLAGS="-march=athlon-xp -m3dnow -msse -mfpmath=sse -mmmx -O3
-pipe -fforce-addr -fomit-frame-pointer -funroll-loops -frerun-cse-after-loop
-frerun-loop-opt -falign-functions=4 -maccumulate-outgoing-args -ffast-math
-fprefetch-loop-arrays"
CXXFLAGS="${CFLAGS}"

Irian bien en mi 1600?
_________________
Soi un gentooza total

www.gentoo-brain.org

Ayudando a la comunidad hispana de gentoo
Back to top
View user's profile Send private message
Boohbah
Apprentice
Apprentice


Joined: 17 Oct 2003
Posts: 250
Location: Seattle

PostPosted: Thu Nov 20, 2003 12:26 am    Post subject: Reply with quote

Para mi Athlon XP 2600+, uso
CFLAGS="-march=athlon-xp -O3 -pipe"
and it's reasonably stable
Back to top
View user's profile Send private message
jBilbo
Guru
Guru


Joined: 27 Jan 2003
Posts: 353
Location: Tarragona (Spain)

PostPosted: Thu Nov 20, 2003 12:59 pm    Post subject: Reply with quote

-O2 más rápido que -O3

http://article.gmane.org/gmane.linux.gentoo.user/52619

había también otra referencia en la gwn, si la encuentro ya la pondré.
_________________
"A ti corresponde decidir lo que hacer con el tiempo que se te ha concedido."
Miembro del LUG de Tarragona:
http://www.gpltarragona.org
Back to top
View user's profile Send private message
ork2por
n00b
n00b


Joined: 13 Aug 2003
Posts: 25

PostPosted: Thu Nov 20, 2003 6:51 pm    Post subject: Reply with quote

mucha info, pruebas, experiencias en: http://www.pcmasmas.com.ar/viewtopic.php?t=12126
Back to top
View user's profile Send private message
jBilbo
Guru
Guru


Joined: 27 Jan 2003
Posts: 353
Location: Tarragona (Spain)

PostPosted: Fri Nov 21, 2003 3:29 pm    Post subject: Reply with quote

Otro post sobre flags:

https://forums.gentoo.org/viewtopic.php?p=662787
_________________
"A ti corresponde decidir lo que hacer con el tiempo que se te ha concedido."
Miembro del LUG de Tarragona:
http://www.gpltarragona.org
Back to top
View user's profile Send private message
anvesaka
Tux's lil' helper
Tux's lil' helper


Joined: 14 Nov 2002
Posts: 138
Location: Toledo, Spain

PostPosted: Tue Nov 25, 2003 12:20 am    Post subject: Reply with quote

Algunas aclaraciones que algunos no tienen claro (yo tampoco las tenía antes):

-march=lo-que-sea ya elige el juego de instrucciones adecuado para el procesador lo-que-sea. Es decir, poniendo por ejemplo -march=athlon, no necesitas ninguna opción más que empiece por "m". Ponerlas es redundancia y confunde a la vista. No es necesario poner -mmmx -m3dnow, etc.

-O3 puede ser más lento en un buen número de casos. En general es poco efectivo o incluso más lento con programas grandes en el lenguaje C. Si un programador estima que una función tiene que ser o no ser "inline", lo hará él mejor que nosotros. No somos nosotros quienes tenemos que forzar al compilador a compilarlo casi todo "inline". En C++ sin embargo el -O3 es más efectivo, pero aun así tampoco lo es tanto. Con el procesador Athlon en concreto, y a diferencia del Pentium, las optimizaciones por llamadas a funciones no tienen sentido. Este procesador es muy rápido en este aspecto y hacer una función inline lo único que conseguirá es probablemente hacer el programa maś pesado en consumo de memoria y otros recursos (como la velocidad de carga).

-Las (posibles) optimizaciones que no se incluyen en -O2 u -O3 son por algo. Estas son:

-funroll-loops -funroll-all-loops -ffloat-store
-fprefetch-loop-arrays -fmove-all-movables -freduce-all-givs -fno-inline -funit-at-a-time -fpeel-loops -ftracer -fnew-ra -funswitch-loops

En general, la activación de alguna de estas opciones mejorará alguna parte del código, pero perjudicará más a otras, haciendo el programa más lento o bien con alguna característica de menos. Por ejemplo, y por nombrar una, -funroll-loops hace que algunos tipos muy concretos de loops vayan más rápido, pero hará ocupar más memoria y hará que otros dejen de estar 100% optimizados por la forma en que tiene que manejar los registros. Yo recomiendo no poner estos flags en el make.conf. Si algún programador considera que son positivos para su programa ya se habrá ocupado de incorporarlos sin necesidad de consultarte, no te preocupes.

-fomit-frame-pointer puede incrementar de forma considerable la velocidad de algunos programas, y en otros no se notará. Pero ya sabrás que si tienes intención de programar no se te debe ocurrir poner este flag, o de lo contrario serás totalmente incapaz de depurar tus programas. Si no eres programador, puedes activarla sin peligro.
-falign-functions=4 ya viene incluida en -mcpu=athlon y por lo tanto en -march=athlon. No es necesaria incluirla.
-ffast-math hace las instrucciones matemáticas más rápidas, lo cual mejora la velocidad de proceso del video, la música, los juegos, etc. GCC advierte de que este flag puede traer problemas, pero si el programa está bien escrito no habrá problema. Si algún programa multimedia (o juego) se te cuelga habiendo sido compilado con este flag, prueba a compilarlo sin él.

Con todo esto, las flags que recomiento para un Athlon-XP son:

-O2 -march=athlon-xp -fomit-frame-pointer -ffast-math

No son necesarias más. Si pones más, te arriesgas a obtener el resultado contrario al esperado y hacer el sistema más pesado.

Espero haber podido ayudar un poco. :)

Saludos.
Back to top
View user's profile Send private message
Stolz
Moderator
Moderator


Joined: 19 Oct 2003
Posts: 3028
Location: Hong Kong

PostPosted: Tue Nov 25, 2003 12:57 am    Post subject: Reply with quote

javuchi77, sinceramente, la mejor explicacion que he leido, se agradece. Yo tenia entendido que el -03 era mejor, pero por lo que dices no siempre es mejor, y cuando lo es, no se nota tanto la diferencia, asi es voy a cambiar mi -03 por -02.

Aun asi tengo unas dudas, si el -03 por lo general es mejor para aplicaciones C, y el -02 para C++... ¿Que tipo de programas son los que mas usamos? Porque segun tengo entendido el nucleo esta escrito en C, pero los entornos de ventanas en C++. ¿Cual nos conviene? (Menudo dilema :))

y por ultimo, de tanto cambiar el make.conf ya no me acuerdo si lo predeterminado que venia nada mas instalar era -02 o -03 ¿Alguien me lo recuerda?

Saludos.
Back to top
View user's profile Send private message
jBilbo
Guru
Guru


Joined: 27 Jan 2003
Posts: 353
Location: Tarragona (Spain)

PostPosted: Tue Nov 25, 2003 1:24 am    Post subject: Reply with quote

Buena explicación javuchi77. Mis flags son parecidas a las tuyas:

"-march=pentium3 -O2 -pipe -fomit-frame-pointer"

Para los que quieran toda la info posible sobre los flags, aquí un link de la fuente oficial, el manual de gcc (en inglés):

http://gcc.gnu.org/onlinedocs/gcc-3.3.2/gcc/Optimize-Options.html#Optimize%20Options

En cuanto a lo de C vs C++, pues si usas KDE usas más C++ que C. Si por el contrario usas Gnome, usas más C.
Independientemente de esto, creo que es mejor optar por -O2.
_________________
"A ti corresponde decidir lo que hacer con el tiempo que se te ha concedido."
Miembro del LUG de Tarragona:
http://www.gpltarragona.org
Back to top
View user's profile Send private message
anvesaka
Tux's lil' helper
Tux's lil' helper


Joined: 14 Nov 2002
Posts: 138
Location: Toledo, Spain

PostPosted: Tue Nov 25, 2003 2:52 am    Post subject: Reply with quote

Stolz wrote:
javuchi77Aun asi tengo unas dudas, si el -03 por lo general es mejor para aplicaciones C, y el -02 para C++... ¿Que tipo de programas son los que mas usamos? Porque segun tengo entendido el nucleo esta escrito en C, pero los entornos de ventanas en C++. ¿Cual nos conviene? (Menudo dilema :))


Es al contrario de como dices. :)
El -O3 es más apropiado para C++. Si queremos incluirlo, podemos hacer que CXXFLAGS sea igual que CFLAGS pero cambiando el -O2 por el -O3. De esta manera le estamos diciendo al portage que compile con -O3 para C++ y con -O2 para C. La forma de hacerlo es poner estas líneas en el make.conf (quitando las anteriores y poniendo el procesador que tengamos en lugar del athlon, por supuesto):

Code:

CFLAGS="-march=athlon-xp -O2 -fomit-frame-pointer -ffast-math -pipe"
CXXFLAGS="-march=athlon-xp -O3 -fomit-frame-pointer -ffast-math -pipe"


El motivo por el cual -O3 es más efectivo en C++ que en C se debe a la forma en la que usualmente están diseñados los programas en C++: pequeñas funciones (en relidad miembros de clases) que son llamadas muchas veces. Por ejemplo, la función de un miembro de una clase X puede ser poner un valor en una variable privada. Este código es muy corto y se repite en muchas ocasiones a lo largo de un programa típico de C++, así que las optimizaciones por funciones inline (que son las que activa -O3) pueden ser positivas. En C es rarísimo que este tipo de funciones exista y por lo tanto -O3 puede ser innecesario e incluso hasta negativo.
De todas formas esto es siempre una lotería. Incluso en el probable caso de que la optimización por funciones inline sea beneficioso para un programa en C++, invariablemente el programa que necesite de tal optimización es un programa que no ha sido pensado para ser muy eficiente y por lo tanto irá lento de todas formas. Y eso si no hablamos de mostrencos como el Mozilla o el OpenOffice que encima se niegan a aceptar el -O3 te pongas como te pongas...

- Programas típicos que usan C son: el kernel, GTK, Gnome, XMMS, mplayer, opengl, casi todos los servidores (como apache), todas las librerías principales del sistema y en general seguramente más del 80% del sistema.

- Programas típicos que usan C++ son: Mozilla, todos los programas de KDE, algunos de Gnome (creo recordar que el Nautilus es uno de ellos), OpenOffice, etc.

Como puedes comprobar, son los programas realizados en C++ los que suelen ser más pesados y menos optimizados. :) (En el OpenOffice, por cierto, esto se agrava sobremanera porque además de ser una aplicación mastodóntica, de decenas de "megas", está tan mal escrita que las CFLAGS le afectan mucho y no es posible utilizar las optimizaciones que el GCC nos brinda). Yo soy de la opinión de que el C++, el Java, la programación orientada a objeto, etc, nos está haciendo volver al pasado... el oowriter (el procesador de textos del OpenOffice) van tan rápido en un 2000 como el Abiword en un 200.... y el konkeror o el nautilus va más lento en un 2000 que el Norton Comander en un 486... pero en fin, no deja de ser una opinión. ;) ¡Por esto no hay mejor optimización que saber elegir el programa correcto! Este es el mejor consejo que puedo darte...

Quote:

y por ultimo, de tanto cambiar el make.conf ya no me acuerdo si lo predeterminado que venia nada mas instalar era -02 o -03 ¿Alguien me lo recuerda?

Saludos.


De serie viene sin CFLAGS (tiene esa linea comentada), por lo que coje las que son por defecto del GCC, es decir -O0 y -march=i386. No obstante ante la ausencia de CFLAGS algunos paquetes pondran la suya propia por defecto, generalmente es simplemente -O2, a secas, sin -march, lo cual equivale a -march=i386 en el caso del PC.

Saludos.


Last edited by anvesaka on Sat Nov 29, 2003 9:22 pm; edited 1 time in total
Back to top
View user's profile Send private message
thorero
Tux's lil' helper
Tux's lil' helper


Joined: 16 Apr 2003
Posts: 108
Location: gentoo-brain

PostPosted: Tue Nov 25, 2003 7:08 am    Post subject: Reply with quote

buena explicacion de ambos
_________________
Soi un gentooza total

www.gentoo-brain.org

Ayudando a la comunidad hispana de gentoo
Back to top
View user's profile Send private message
jonash
Tux's lil' helper
Tux's lil' helper


Joined: 04 Apr 2003
Posts: 107

PostPosted: Sat Nov 29, 2003 9:16 pm    Post subject: Reply with quote

javuchi77 wrote:


Code:

CFLAGS="-march=athlon-xp -O2 -fomit-frame-pointer -ffast-math -pipe"
CPPFLAGS="-march=athlon-xp -O3 -fomit-frame-pointer -ffast-math -pipe"
.

Si se usa CPPFLAGS, se debe comentar la linea CXXFLAGS?¿
Back to top
View user's profile Send private message
anvesaka
Tux's lil' helper
Tux's lil' helper


Joined: 14 Nov 2002
Posts: 138
Location: Toledo, Spain

PostPosted: Sat Nov 29, 2003 9:21 pm    Post subject: Reply with quote

jonash wrote:

Si se usa CPPFLAGS, se debe comentar la linea CXXFLAGS?¿


La verdad es que ahora que lo dices, he cometido yo un error y no es CPPFLAGS sinó CXXFLAGS. Lo corrijo del anterior mensaje.

Saludos.
Back to top
View user's profile Send private message
jonash
Tux's lil' helper
Tux's lil' helper


Joined: 04 Apr 2003
Posts: 107

PostPosted: Sat Nov 29, 2003 10:47 pm    Post subject: Reply with quote

fale, gracias por la aclaracion, vamos a cambiarlo
Back to top
View user's profile Send private message
cnyx
l33t
l33t


Joined: 17 Jul 2003
Posts: 883
Location: Valencia

PostPosted: Thu Dec 04, 2003 1:45 pm    Post subject: Reply with quote

Hola, yo tengo las flags como javuchi77 y cuando estoy compilando algo me dice lo siguiente:
Code:

g++: unrecognized option `-03'


no da error ni nada, sigue adelante pero quisiera saber porque pasa esto.
saludos
Back to top
View user's profile Send private message
jBilbo
Guru
Guru


Joined: 27 Jan 2003
Posts: 353
Location: Tarragona (Spain)

PostPosted: Thu Dec 04, 2003 3:23 pm    Post subject: Reply with quote

cnyx wrote:
Hola, yo tengo las flags como javuchi77 y cuando estoy compilando algo me dice lo siguiente:
Code:

g++: unrecognized option `-03'


no da error ni nada, sigue adelante pero quisiera saber porque pasa esto.
saludos


Porque es menos o 3, no menos zero 3... :D (fíjate en o de letra, no de zero de numero :P)
_________________
"A ti corresponde decidir lo que hacer con el tiempo que se te ha concedido."
Miembro del LUG de Tarragona:
http://www.gpltarragona.org
Back to top
View user's profile Send private message
cnyx
l33t
l33t


Joined: 17 Jul 2003
Posts: 883
Location: Valencia

PostPosted: Thu Dec 04, 2003 4:18 pm    Post subject: Reply with quote

ok, mil gracias jeje. que cagada jajaja.
saludos
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Spanish All times are GMT
Page 1 of 1

 
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