Consumo de recursos

Started by Hola, January 26, 2019, 09:43:33 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Hola

Hola, quería hacer una pregunta rápida. Usar variables de tipo string, consume más recursos de memoria que si utilizara puras variables de tipo numérico como word, int, etc?? A lo mejor depende de la cantidad de cadenas o numeros que vaya a utilizar..? Mm, bueno, igual quería saber vuestra opinión.


Salu2

panreyes

Bastantes recursos más. Piensa que internamente una string es como una array de chars de tamaño indeterminado.

Lo ideal es utilizar el tipo que más convenga, o al menos int para los números y float para decimales :)

Hola


Arcontus

Quote from: panreyes on January 26, 2019, 10:21:19 PM
Bastantes recursos más. Piensa que internamente una string es como una array de chars de tamaño indeterminado.

Lo ideal es utilizar el tipo que más convenga, o al menos int para los números y float para decimales :)
Efectivamente las Strings consumen mucha más memoria que cualquier otro tipo de datos por las razones que Panreyes te ha dado, pero con la potencia de cálculo de los procesadores actuales no deberías notar ese overhead. Eso no quiere decir que este bien usar strings para almacenar datos que no lo sean, pero es más por un tema legibillidad y organización.

Llendo esto al extremo, podrías pensar que usar BOOL para 0 o 1 (false o true) (1 bit) debería ocupar menos en memoria que un tipo BYTE (8 bits), pero a la práctica ocupan exactamente lo mismo (por otros temas de arquitectura 32 bits) (16 bits que es una palabra o unidad mínima en procesadores de 32bits).  https://es.wikipedia.org/wiki/Unidades_de_informaci%C3%B3n#Palabra

5Leaps, el primer juego comercial desarrollado para BennuGD. http://www.5leaps.com

Drumpi

Quote from: Arcontus on January 27, 2019, 03:29:46 PMLlendo esto al extremo, podrías pensar que usar BOOL para 0 o 1 (false o true) (1 bit) debería ocupar menos en memoria que un tipo BYTE (8 bits), pero a la práctica ocupan exactamente lo mismo (por otros temas de arquitectura 32 bits) (16 bits que es una palabra o unidad mínima en procesadores de 32bits).  https://es.wikipedia.org/wiki/Unidades_de_informaci%C3%B3n#Palabra

Tenía entendido que lo que se hacía normalmente era reservar una zona de memoria para los datos tipo bool, y agruparlos en bytes o words, y luego usar operaciones de máscara para obtener su valor.
O a lo mejor eso era cuando la memoria era demasiado cara para almacenar esos tipos de datos de forma independiente ¿no?
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

SplinterGU

Quote from: Drumpi on June 07, 2019, 11:59:13 AM
Quote from: Arcontus on January 27, 2019, 03:29:46 PMLlendo esto al extremo, podrías pensar que usar BOOL para 0 o 1 (false o true) (1 bit) debería ocupar menos en memoria que un tipo BYTE (8 bits), pero a la práctica ocupan exactamente lo mismo (por otros temas de arquitectura 32 bits) (16 bits que es una palabra o unidad mínima en procesadores de 32bits).  https://es.wikipedia.org/wiki/Unidades_de_informaci%C3%B3n#Palabra

Tenía entendido que lo que se hacía normalmente era reservar una zona de memoria para los datos tipo bool, y agruparlos en bytes o words, y luego usar operaciones de máscara para obtener su valor.
O a lo mejor eso era cuando la memoria era demasiado cara para almacenar esos tipos de datos de forma independiente ¿no?

eso se puede hacer en C, en bennugd no...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Arcontus

Quote from: SplinterGU on June 07, 2019, 08:05:45 PM
Quote from: Drumpi on June 07, 2019, 11:59:13 AM
Quote from: Arcontus on January 27, 2019, 03:29:46 PMLlendo esto al extremo, podrías pensar que usar BOOL para 0 o 1 (false o true) (1 bit) debería ocupar menos en memoria que un tipo BYTE (8 bits), pero a la práctica ocupan exactamente lo mismo (por otros temas de arquitectura 32 bits) (16 bits que es una palabra o unidad mínima en procesadores de 32bits).  https://es.wikipedia.org/wiki/Unidades_de_informaci%C3%B3n#Palabra

Tenía entendido que lo que se hacía normalmente era reservar una zona de memoria para los datos tipo bool, y agruparlos en bytes o words, y luego usar operaciones de máscara para obtener su valor.
O a lo mejor eso era cuando la memoria era demasiado cara para almacenar esos tipos de datos de forma independiente ¿no?

eso se puede hacer en C, en bennugd no...
Correctisimo Drumpi, pero solo se utiliza si quieres agrupar bools en un byte para que ocupen menos memoria. Teniendo en cuenta cuando de desarrolló C esto tiene sentido ya que la memoria era bastante escasa, pero hoy en día no creo que lo haga nadie mas que hackers y con otros menesteres más oscuros.

5Leaps, el primer juego comercial desarrollado para BennuGD. http://www.5leaps.com

SplinterGU

Quote from: Arcontus on June 07, 2019, 10:51:14 PM
Quote from: SplinterGU on June 07, 2019, 08:05:45 PM
Quote from: Drumpi on June 07, 2019, 11:59:13 AM
Quote from: Arcontus on January 27, 2019, 03:29:46 PMLlendo esto al extremo, podrías pensar que usar BOOL para 0 o 1 (false o true) (1 bit) debería ocupar menos en memoria que un tipo BYTE (8 bits), pero a la práctica ocupan exactamente lo mismo (por otros temas de arquitectura 32 bits) (16 bits que es una palabra o unidad mínima en procesadores de 32bits).  https://es.wikipedia.org/wiki/Unidades_de_informaci%C3%B3n#Palabra

Tenía entendido que lo que se hacía normalmente era reservar una zona de memoria para los datos tipo bool, y agruparlos en bytes o words, y luego usar operaciones de máscara para obtener su valor.
O a lo mejor eso era cuando la memoria era demasiado cara para almacenar esos tipos de datos de forma independiente ¿no?

eso se puede hacer en C, en bennugd no...
Correctisimo Drumpi, pero solo se utiliza si quieres agrupar bools en un byte para que ocupen menos memoria. Teniendo en cuenta cuando de desarrolló C esto tiene sentido ya que la memoria era bastante escasa, pero hoy en día no creo que lo haga nadie mas que hackers y con otros menesteres más oscuros.



yo lo uso en bennugd2... y creo que en 1 tambien...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Drumpi

Juer, cómo estoy. Pensaba que hablábamos de C, de las entrañas de Bennu :S
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

SplinterGU

Quote from: Drumpi on June 10, 2019, 12:34:06 PM
Juer, cómo estoy. Pensaba que hablábamos de C, de las entrañas de Bennu :S

en las entrañas, claro
Download Lastest BennuGD Release: http://www.bennugd.org/node/2