Hay forma de saber el tamaño de un FPG cargado?

Started by gecko, May 16, 2013, 12:53:18 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

gecko

Bueno, eso. Que estoy haciendo pruebas para un administrador de archivos y me surgen estas dudas...

En el caso de que un fpg esté comprimido, hay forma de saber cuanta memoria ram ocupa una vez cargado?

Y en el caso de los descomprimidos, es correcto asumir que si el archivo ocupa por ejemplo 50kb, en RAM también ocupará 50kb?

Hay alguna forma de saberlo? o de calcularlo?

Gracias!
Torres Baldi Studio
http://torresbaldi.com

FreeYourMind

Never. El tamaño en la ram es siempre lo que ocupa descomprimido. ahora saber el tamaño no se si hay alguna variable que te lo facilite

panreyes

Si no me equivoco, el tamaño de un FPG en RAM es el tamaño del FPG descomprimido.

Erkosone

Eso hay que mirarlo detenidamente por que seguramente no será así en ningún caso.. me explico.


Cuando cargas datos desde disco siempre hacen falta mas variables para control interno de la información, seguramente, y digo seguramente por que no lo se en el caso de bennuGD pero estoy casi convencido de que es así, pues eso, seguramente solo el cargar la lista de puntos de control de un mapa ya requiera de alguna variable mas para la gestión de los mismos, seguro que se crea algo mas en memoria aparte de la simple lista de puntos de control, a esto hay que añadir por ejemplo si el tratamiento de la lista es dinámico o estático, pues implica que cada cpoint será un nodo o un simple objeto dentro de un array estatico, si es dinámico.. osea, si son nodos en una lista doblemente enlazada "que no lo se.." pues hay que añadir un par de punteros por cpoint, osea, dos INT multiplicado por 999.


A esto hay que añadir que si se trata de un sistema operativo nativo de 64 bits.. quizá "dependiendo de como esté programado bennuGD" el tipo de dato entero sea de 32 o 64 bits.. y entonces ocupará mas o menos..


Y como esto pues todo lo que contenga de forma dinámica o estática un archivo FPG en bennuGD, yo creo que para hacer una buena aproximación alguien tendría que examinar muy detenidamente el motor de bennuGD y ver de que forma se trata a los archivos FPG, pues yo creo que es imposible que ocupe en ram lo mismo que ocupa en disco, vamos.. es muy poco probable que así sea ;)


Quizá el que mas pueda aproximarse al cálculo real de la cantidad de RAM necesaria para contener un FPG sea Splinter por que conoce hasta el mas oscuro rincón del motor, pero vaya.. que yo creo que no va a ser exactamente lo mismo "en absolutamente ningún caso".


La mejor forma de probarlo quizá sea la de comprobar la memoria disponible, cargar el fpg y volver a comprobar.. no es que sea fiable.. pero si se hace esta comprobación unas 100 veces y se saca una media quizá sea un dato bastante aproximado ;)


Pero vaya.. que esto que digo es hablar por hablar por que no conozco el source de bennu.

gecko

Para guardar archivos sin comprimir tengo que recurrir a alguna version (vieja?) de FPG Edit, no? Porque ya Bennu y Smart FPG Editor lo guardan comprimido.

Entiendo Erkosone lo que me decís, esperemos a ver que dice Splinter, si es significativa la diferencia de tamaño que pueden llegar a ocupar todos esos datos en la RAM comparados con los datos en disco.
Torres Baldi Studio
http://torresbaldi.com

panreyes

Quote from: gecko on May 16, 2013, 03:28:39 PM
Para guardar archivos sin comprimir tengo que recurrir a alguna version (vieja?) de FPG Edit, no? Porque ya Bennu y Smart FPG Editor lo guardan comprimido.

Entiendo Erkosone lo que me decís, esperemos a ver que dice Splinter, si es significativa la diferencia de tamaño que pueden llegar a ocupar todos esos datos en la RAM comparados con los datos en disco.
Puedes descomprimirlos añadiéndoles la extensión .gz y descomprimiéndolos con casi cualquier programa.


Ejemplo: graficos.fpg.gz

Erkosone

Quote from: gecko on May 16, 2013, 03:28:39 PM
Para guardar archivos sin comprimir tengo que recurrir a alguna version (vieja?) de FPG Edit, no? Porque ya Bennu y Smart FPG Editor lo guardan comprimido.

Entiendo Erkosone lo que me decís, esperemos a ver que dice Splinter, si es significativa la diferencia de tamaño que pueden llegar a ocupar todos esos datos en la RAM comparados con los datos en disco.


Hombre.. significativa claro que no jeje, no va a llegar ni a 10 kByte extra, pero claro, tu has preguntado lo que ocupa en ram, si lo que quieres es una aproximación lo que te han dicho antes ya sirve sin problema, pensaba que querías saberlo con precisión, sorry por la chapa entonces  :P

SplinterGU

muy bien Erkosone, efectivamente, algo mas de memoria que descomprimido ocupa, aunque no mucho mas, el tamaño descomprimido, sin duda te puede dar una idea de cuanto va a ocupar... pero tambien pensemos que no es lo mismo un fpg de 8 que uno de 16 o 32... pero mas o menos (no exacto) es el tamaño que ocupa descomprimido.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

para descomprimir los fpg puedes usar la utilidad gunzip o cualquier cosa que descomprima gzip.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

gecko

Con que no es lo mismo 8 que 16 que 32 bits quieres decir que internamente se hace alguna conversion con el FPG?

Por ejemplo si el FPG esta a 8 bits, y el juego a 16... deberia asumir que en RAM va a ocupar lo que ocuparia el FPG guardado a 16 bits?

Ah, y gracias por las respuestas! :)
Torres Baldi Studio
http://torresbaldi.com

SplinterGU

pues eso, no es lo mismo... 8bits tiene paleta, los archivos tienen gamma, etc.... no es lo mismo un fpg de 8 que de 16 o 32.

no, ya lo he dicho varias veces, no hay conversiones en la carga de archivos fpg/map.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

gecko

aaaaaah ok ok, si entiendo.

Y todo esto es imposible saberlo desde bennu, no? (el tamaño del fpg, digo)

Pensando en voz alta: Se me ocurre que si calculo la dimension de cada imagen del fpg y las sumo me deberia dar algo aproximado... pero no lo veo para nada eficiente xD xD
Torres Baldi Studio
http://torresbaldi.com

SplinterGU

es que no tiene sentido, hablando genericamente, nunca puedes saber previamente (antes de cargarlo) que ocupa algo en memoria, puesto que dependera del tipo de dato que cargue y de las variables internas necesarias para eso, por ejemplo, incluso estructuras de hash o arrays de id u otros datos.
incluso la memoria usada para cargarlo, varia si usas un thread (carga en background) o una carga directa.
realmente no entiendo para que quieres saber este dato, puedes obtener la memoria antes de cargarlo y despues, pero incluso no es un resultado fiable.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

gecko

en realidad simplemente quiero hacer que un proceso tenga una lista de los fpgs ( y de todos los archivos/recursos/audio/etc, en realidad) cargados en determinado momento. Por eso no tiene que ser tan tan exacto, pero la idea era que me sirva para todos los fpgs.
Torres Baldi Studio
http://torresbaldi.com

FreeYourMind