--
Has recibido este mensaje porque estás suscrito a code...@googlegroups.com
Incluye tu información de perfil en http://groups.google.es/group/codepixel/web/lista-de-miembros
Para obtener más opciones, visita este grupo en http://groups.google.es/group/codepixel?hl=es.
http://www.codepixel.com
Saludos!
Y ahi es donde entra el compilador. Muchas veces un compilador puede
ayudarte a mejorar tu código, pero cuanto más trabajo tenga que hacer
para transformar tu código en algo ejecutable, más probabilidades hay
de que introduzca ineficiencias (funciones virtuales, copia de
objetos, inicializaciones innecesarias, branches, distribución en
memoria poco eficiente, etc).
Ah, relacionado 100% con lo que dice Javier, artículo interesante:
http://gamesfromwithin.com/data-oriented-design
Había por ahi una presentación que aplicaba estos conceptos para
acelerar precisamente una rutina de intersección rayo-triángulo, pero
ahora mismo no la encuentro (una que estaba hecha con post-its
¿alguien la recuerda? ).
Un saludoo
2010/11/12 Javier Loureiro Varela <dere...@gmail.com>:
> Ahora mismo, para usar una aceleración GPU, o te adaptas a
> la programación vectorial o no te comes un torrao, y yo creo que eso
> no tendría que ser así.
Ehhm... Las GPU son casi 100% procesadores vectoriales. ¿Cómo esperas
que tu código sea eficiente si no lo programas de forma vectorial?
> Un programador tendría que ser libre de programar correctamente en POO y al
> mismo tiempo el hardware tendría que ejecutar perfectamente ese programa con
> el máximo de rendimiento, pero claro, te dirán que se usa menos silicio para
> hacer un procesador vectorial que uno para que el programador este cómodo.
No, el problema es más bien que no hay varitas mágicas. ¿Quieres un
procesador no vectorial que vaya a toda leche? Ok, pero prepárate para
necesitar un sistema de refrigeración como el de una central nuclear.
Aparte de que consumirá una burrada de electricidad, claro.
Y en cuanto a POO, tampoco hay varitas mágicas. Si defines tus clases
de la zona de rendimiento crítico con 5 niveles de herencia con
funciones virtuales, las vtables que se generen van ser telita de la
buena. Buena suerte sacando buen rendimiento de ahí cuando el
procesador tenga que navegar 5 niveles de punteros para encontrar la
función a llamar (y tener un porrón de cache misses en el intento).
Un saludoo
a mi no se me ocurriría hacer una aplicación de gestión pensando en
sacarle el máximo rendimiento a la máquina, porque cuando la hayas
entregado al cliente y antes de que te de las gracias, es posible que
te pida un 'special button by the face' que te joderá bastante montar
según como hayas planteado el problema desde el principio.
Otro factor que creo que influye es cuanto puedes producir una vez
tengas el 'core' de tu aplicación. Me refiero en cuanto tiempo puedes
producir más funcionalidades. Otra cuestión es el tiempo de adaptación
de nuevos compañeros en el team, aunque esto esta más relacionado con
lo bien que hayas organizado el código y documentado, no ?
Well, my 2 cents :))
2010/11/12 Manuel Padron Martinez <mano...@gmail.com>:
--
Pablo Quesada Barriuso.
email: pab...@gmail.com
blog: http://pabloqb.evolution42.com
Mmmm o no... vease el nucleo de linux (vale, si, es un caso muy
especifico) pero se programa en C a pelo y con un montón de
desarrolladores en ciclos medianamente cortos (para las
funcionalidades nuevas que se meten).
Creo (y corrijanme si me equivoco) que Javi se refería a programar en
C pero no a no programar con structs y modularización (vale a nivel de
ficheros y funciones pero modularización al fin y al cabo). No tiene
por que estár todo en la cabeza del tio (que este es un mal tio por
contraste con el otro :D)
> 2.- Los proyectos muy grandes con amplia abstracción de datos y
> "convenientemente" modularizados a la hora del diseño teniendo en
> mente a donde quieres ir permiten una
> gran flexibilidad , reusabilidad por personas que no tienen porque
> ser expertas y permiten compartimentar el código y por tanto repartir
> tareas...
> No quiere decir esto que por tener objetos , abstracción de datos y
> polimorfismo tengas un buen programa ... ( de hecho muchas veces
> ocurre lo contrario) sino que si usas estas
> tecnologías de modo inteligente puedes tener un muy buen soft.
Bueno, aqui también va a gustos personales, pero por ejemplo un soft
en java, hiper modularizado, con mil patrones y demás a mi me parece
una pesadilla (precisamente por exceso de modularización)