Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Optimizar A Favor De Velocidad En El Gcc

Iniciado por zupervaca, 21 de Marzo de 2006, 03:25:47 PM

« anterior - próximo »

zupervaca

 Creo que los 10 fps que saca windows a linux en el proyecto que tengo multiplataforma no es por el sistema operativo, el problema es que el compilador de visual studio lo tengo muy quemao y se como sacrificar tamaño por velocidad (por eso ocupan el doble los exe de windows), ¿alguien sabe como favorecer la velocidad al tamaño de codigo desde el gcc? Con funciones intrinsecas y que ponga funciones inline a las que puedan serlo creo que valdria.

Gracias de antemano.

ethernet

 zupervaca, no te estás quemando mucho por 10 míseros fps? De cualquier forma creo que gcc tiene opciones de compilación que las especificas con -O y otras para optimizar para la aruiqtectura que estás usando, que creo que es -arch.

Sin tener mucha idea de linux ni de windows, no podría ser por las diferentes versiones de drivers? o por la capa de software que haya hasta llegar al hardware?

Recuerdo cuando usaban intel c++ que usando sus optimizaciones me duplicaba los fps, a eso le llamo yo variación, no a 10 fps XD.

TheAzazel

 Prueba con -O3. Aunque yo normalmente suelo utilizar -Os para que optimice para espacio ya que normalmente, menos espacio es mas velocidad (por temas relacionados con caches).

Pero vamos, la dif entre un -O3 y un -Os o sin nada, lo vas a notar en muy contadas ocasiones y codigo bastante especifico. Pero para lo que nos ocupa, tu test opengl, estoy seguro que influye muy muy poco. En ese caso, quien se lleva casi todo el tiempo de proceso son los drivers de la tarjeta de video y esos 10fps que se llevan de uno a otro es infimo... ten en cuenta que los drivers para windows estan bastante mas optimizados que para linux luego es todo un logro que en linux vaya tan bien :)

Por cierto, si quieres probar con un compilador que sea muy optimo, instala el IntelC++ para Linux y con ese supongo que notaras algo, es el compilador que produce mejor codigo(tanto para Intel como para AMD), ten en cuenta que el GNU GCC no es conocido precisamente por su optimizacion de codigo...

Saludos

ethernet

Cita de: "TheAzazel"Prueba con -O3. Aunque yo normalmente suelo utilizar -Os para que optimice para espacio ya que normalmente, menos espacio es mas velocidad (por temas relacionados con caches).
Umh... entonces mis 4kb tendrían que ser rápidas como tiros no?

TheAzazel

 4KB entran de sobra en la L1 pero me imagino que al vuelo generaras tablas precalculadas, texturas procedurales y movidas de esas que ya ocupan espacio y se iran a la L2 o a la memoria.

Pero vamos, si tienes codigo de 4Kb y todo lo que se va a ejecutar esta incluido, se ejecutaria en condiciones optimas ya que estaria casi con toda probabilidad, siempre incluido en la L1 (hay mas programas luchando por ese espacio, pero como el tuyo sera intensivo, tendra mas peso y mas probable es que resida alli), y a ese nivel, si quieres optimizar "a saco" ya tienes que ponerte a reordenar instrucciones para ocultar las latencias de las complejas y demas movidillas, y eso es ya ASM, a mi me gusta bastante...pero hoy en dia tiene muy poco sentido :)

ethernet

 Lógicamente el problema no está en los 4kb de código si no en la cantidad de datos que genera y maneja que son el problema tocho.

DraKKaR

 Estoy con theAzazel. En una aplicación gráfica lo más lógico es que el cuello de botella esté relacionado con la parte gráfica. Esa diferencia de rendimiento la achacaría más bien a la implementación de los drivers para cada sistema oeprativo, que por mucho que quieras, mientras no haya un parque de jugones interesante en linux, los drivers no seán tan buenos como los de windows.

n3k0

  Si, es complicado,  mucha gente de linux no le importaría que los fabricantes de HW liberasen sus especificaciones tecnicas y así facilitaran la programación de drivers para otros sistemas operativos menos usados, pero claro, eso igual puede ayudar a la competencia a que te pisotee el negocio. Y puede que hagan algún driver para algún sistema operativo más minoritario, pero seguro que no invierten los mismos recursos y lo actualizan tanto.

zupervaca

 La verdad es que la gente me esta volviendo loca, todo el mundo dice que linux graficamente es mas potente incluso que algunos juegos les va mejor en linux que en windows (lo dicen del quake3) y yo todo loco sin saber por que me va mas lento el asunto en linux y ahora resulta que todo el mundo me esta diciendo que los drivers de linux son mas lentos que los de windows, loco!!! (grrr)

PD: Aunque parezca que en el post estoy de mala leche y odiando a todos no es asi ;), solo que parece que siempre soy la oposicion :lol:

n3k0

 Zupervaca, depende mucho de tu tarjeta gráfica, la gente dice que  nvidia tiene mejor soporte y mejores drivers en linux que ATI, también el rendimiento de un juego en linux depende de muchos otros factores, como con que prioridad se ejecuta, el numero de procesos que estás ejecutando, si tienes puesto un servidor apache, el servidor mysql, etc... etc... etc... seguro que no se le saca todo el rendimiento que se le puede sacar.

TheAzazel

 Nunca he oido eso de que en Linux van los juegos mas rapido... de hecho, en todas las comparativas que he visto corriendo juegos, siempre va mas rapido en Windows y depende el juego y los drivers/tarjeta de video usada, la diferencia de rendimiento es mayor o casi nula.

zupervaca, si yo fuera tu, estaria agradecido de obtener esos frames :) hace unos años la diferencia era mucho mayor, hoy en dia es perfectamente factible utilizar Linux como plataforma de juegos, de hecho, las nuevas distribuciones casi que se instalan mas facilmente que los windows jeje.

Prueba el IntelC++ y dinos si has notado diferencia, aparte los diferentes switches del g++. Ya que estas.... jejeje

ethernet

Cita de: "TheAzazel"
Prueba el IntelC++ y dinos si has notado diferencia, aparte los diferentes switches del g++. Ya que estas.... jejeje
Y mañana un informe completo encima de mi mesa... AR!

senior wapo

 En general, los drivers de video de linux son peores que los de windows en 3D y 2D,  sobre todo ATI. Y además está el cuello de botella que representa X11, da igual si usas shm, xv, DGA2, es leeento comparado con windows y buena suerte si esperas triple buffer flipping en lugar de VRAM copy al hacer flip/present (las velas a la virgen al fondo a la derecha).

La verdad, cada vez que he probado un juego supuestamente más rápido en linux, a mi me iba más lento. Yo nunca he tenido una NVIDIA, hablo de ATI.

TheAzazel

Cita de: "ethernet"
Cita de: "TheAzazel"
Prueba el IntelC++ y dinos si has notado diferencia, aparte los diferentes switches del g++. Ya que estas.... jejeje
Y mañana un informe completo encima de mi mesa... AR!
:P  

lord_taran

 Esto... con una Nvidia 5200 en Ubuntu, creo que era en Hoary con el Quake 3 y en Breezy con el Nwn, me iban ambos mejor que en Windows... No recuerdo la tasa, no era nada realmente significativo, pero si mejor. De todas formas lo importante es que se dejaban jugar muy bien ;) Eso sí, jugar mediante Cedega es tirar por los suelos el rendimiento, claro, no es lo mismo emular que tener un cliente. Por desgracia.
El caso es que lo de que haya un parque de jugones en Linux... ya lo hay. Solo hay que ver la de gente que se movilizó para pedir el cliente Linux del WoW a Blizzard, o que votó Linux como su plataforma de juegos en Bioware (vaya forma de putearles la encuesta, que le hicimos xD) Solo hace falta que de verdad los juegos acompañen.
Y perdón por el Off-topic.
n saludo!
Lord Taran
Las Noyas de Taran






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.