python: Aprovechar memoria o desperdiciarla

Tratamos sobre el manejo de APIs frecuentemente utilizadas en el desarrollo de videojuegos, como SDL, pygame o SFML.

¿Derrochar memoria para correr un juego en python?

No importa, vale la pena el gasto
0
No hay votos
Debe haber un equilibrio
3
75%
Cuanto menos memoria se use, mejor
1
25%
 
Votos totales : 4

python: Aprovechar memoria o desperdiciarla

Notapor .teri » Dom Ene 02, 2011 7:54 pm

Me gusta que los recursos se aprovechen al máximo, en concreto que se use el mínimo de memoria. Dado que me gusta usar python para hacer juegos sencillos y rápidos pues me importa bastante en este aspecto qué es lo que uso.
Sin hacer comparaciones concretas he comprobado que usando pygame, la memoria usada comienza con unos 7Mb, pysfml también unos 7Mb y pyglet 30 Mb. Con pyglet no es todo, usándolo con cocos2d el consumo se ha disparado a unos 45Mb.
Yo ya sé que la mayoría de los usuario tienen normalmente de ram 4 Gb pero personalmente me pone malo ver una cifra de 50Mb y encima sabiendo del relativo bajo rendimiento de python. Así que me gustaría conocer opiniones y matizaciones. Por fortuna, no llega al caso de la máquina virtual de Java.
.teri
 
Mensajes: 38
Registrado: Dom Oct 01, 2006 4:41 pm

Re: python: Aprovechar memoria o desperdiciarla

Notapor Juanxo » Dom Ene 02, 2011 11:24 pm

buenas teri:

en mi opinión todo debe ser ponderado, no hagas nada que consuma o requiera demasiada memoria en lenguajes interpretados.
Ahora, en cuanto a lo del consumo de memoria por las bibliotecas y por la maquina virtual de python, ten en cuenta que son modulos bastante grandes, por lo que es lógico el alto consumo de memoria. Si por ejemplo lo comparases con lenguajes del tipo Lua, verías que este consume mucha menos memoria, pero también trae menos cosas por defecto (no es orientado a objetos y otro tipo de cosas). Si realmente es necesario, no es ningún problema tanto consumo, pero haz investigaciones para averiguar si estás haciendo algo que le haga consumir tanta memoria.
Avatar de Usuario
Juanxo
 
Mensajes: 437
Registrado: Sab Ene 31, 2009 2:34 am
Ubicación: Madrid(España)

Re: python: Aprovechar memoria o desperdiciarla

Notapor carlostex » Dom Ene 02, 2011 11:29 pm

Mientras mas memoria se use mas lento será el juego, por que el procesador tiene en algún momento recorrer toda la memoria, por eso debería haber un equilibrio, no se si pygame está programado en python, eso justificaría el consumo de la memoria, pero un programa en C no consume tanta memoria, por eso se suele usar C para las partes críticas de un motor de juegos, eso sería equilibrar facilidad con rendimiento. Lo que consume mas memoria son los gráficos, si el juego esta lleno de gráficos de 32 bits la memoria se dispara, por lo que aquí entra el programador asiendo uso eficiente de la carga de gráficos.
El conocimiento de unos es conocimiento de todos.
Avatar de Usuario
carlostex
 
Mensajes: 249
Registrado: Mar Jul 14, 2009 4:13 am
Ubicación: mexico

Re: python: Aprovechar memoria o desperdiciarla

Notapor .teri » Lun Ene 03, 2011 3:16 pm

No hay una diferencia apreciable de consumo de memoria entre el pysfml y sfml. Pygame, está escrito en c, algo más que SDL porque trae cosas como máscaras o clases base para sprites . El consumo de memoria de un módulo es significativo, por mi experiencia, si se usa ctypes, se usa una mezcla de python y c/c++ para hacer módulos ("shadow classes" en SWIG) o está escrito enteramente en python.
En cuanto "más memoria use un juego, más lento es el juego" pues habría que destripar este tema. El procesador le resulta más cómodo, más eficiente, trabajar con memoria de su mismo ancho de palabra (ej.: un procesador de 32 bits es mucho más eficiente con enteros de 32 bits que con chars) o con múltiplos de ese mismo ancho de palabra (lua alinea las cadenas a un múltiplo del ancho de palabra del ordenador con "basura" para que sea más eficiente). Un juego rinde más si se aplica todo esto. Si haces estructuras (o clases) debes tratar en lo posible que su tamaño sea del mismo tamaño de palabra o un algún múltiplo de esa palabra para que el procesador lo mueva de forma eficiente (mirad las estructuras SDL_Rect como ejemplo), aunque esto quizá ya queda para los puristas del rendimiento. Ya por último no quiero decir que debas estar usando todo el tiempo enteros, sino cuando resulte posible y no incomode. Bueno, todo esto ya sería otro tema a tratar.
.teri
 
Mensajes: 38
Registrado: Dom Oct 01, 2006 4:41 pm

Re: python: Aprovechar memoria o desperdiciarla

Notapor Juanxo » Lun Ene 03, 2011 4:45 pm

el problema que tienes por lo que veo es como el mío... yo también me meto en detalles de ese estilo, a veces llegando a rozar la obsesión( si hasta tengo el "Video Game optimization") , aunque muchas veces no llevan a ventajas grandes, ya que los compiladores son cada vez más listos

En cuanto a lo de la memoria, por mucho que sean bindings de librerías en C/C++, siempre tienes código escrito en python, interfaces y demás, que el interprete tiene que mantener en memoria para ir ejecutando, por lo que, a mi modo de ver, sería como tener los archivos abiertos, de hay que se consuma más memoria. Prueba a "precompilar" los códigos de python y ver si sigue consumiendo tanto.

Otro tema es que la mayoría de estos lenguajes tiene un "pool" preestablecido donde coger toda la memoria, lo que conlleva que tenga que tener memoria prealocada.

Pero en resumidas cuentas, el tema de usar python u otro lenguaje interpretado es hacer la vida más fácil al programador, ya sea delegando aspectos de la lógica a los diseñadores ( que para ellos será más fácil de usar uno de estos lenguajes), evitando tener que recompilar para cada cambio, permitiendo separar los módulos estables (engine) de las locuras que puedan hacer los diseñadores (codigo interpretado)...etc etc
Avatar de Usuario
Juanxo
 
Mensajes: 437
Registrado: Sab Ene 31, 2009 2:34 am
Ubicación: Madrid(España)

Re: python: Aprovechar memoria o desperdiciarla

Notapor .teri » Mié Ene 05, 2011 6:10 pm

Si no me equivoco el rendimiento también está tocado al tener que reservar y liberar memoria y esto en las máquinas virtuales de lenguajes dinámicos se hace a menudo, aparte que también cuenta el rendimiento del recolector de basura.
.teri
 
Mensajes: 38
Registrado: Dom Oct 01, 2006 4:41 pm


Volver a Sobre las bibliotecas multimedia

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados

cron