Autor Tema: Consumo de recursos  (Leído 1157 veces)

Hola

  • Full Member
  • ***
  • Mensajes: 116
  • Karma: 0
Consumo de recursos
« en: Enero 26, 2019, 09:43:33 pm »
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

  • Administrator
  • *****
  • Mensajes: 2235
  • Karma: 81
    • panreyes.com
Re:Consumo de recursos
« Respuesta #1 en: Enero 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 :)

Hola

  • Full Member
  • ***
  • Mensajes: 116
  • Karma: 0
Re:Consumo de recursos
« Respuesta #2 en: Enero 26, 2019, 11:17:19 pm »
Si, eso pensé. Gracias.

Arcontus

  • Sr. Member
  • ****
  • Mensajes: 360
  • Karma: 13
    • 5Leaps
Re:Consumo de recursos
« Respuesta #3 en: Enero 27, 2019, 03:29:46 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

  • Hero Member
  • *****
  • Mensajes: 6340
  • Karma: 162
  • Odio el periodo "entre proyectos"
    • La web de Drumpi
Re:Consumo de recursos
« Respuesta #4 en: Junio 07, 2019, 11:59:13 am »
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

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

  • Hero Member
  • *****
  • Mensajes: 12905
  • Karma: 377
Re:Consumo de recursos
« Respuesta #5 en: Junio 07, 2019, 08:05:45 pm »
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

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

  • Sr. Member
  • ****
  • Mensajes: 360
  • Karma: 13
    • 5Leaps
Re:Consumo de recursos
« Respuesta #6 en: Junio 07, 2019, 10:51:14 pm »
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

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

  • Hero Member
  • *****
  • Mensajes: 12905
  • Karma: 377
Re:Consumo de recursos
« Respuesta #7 en: Junio 08, 2019, 01:40:43 am »
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

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

  • Hero Member
  • *****
  • Mensajes: 6340
  • Karma: 162
  • Odio el periodo "entre proyectos"
    • La web de Drumpi
Re:Consumo de recursos
« Respuesta #8 en: Junio 10, 2019, 12:34:06 pm »
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

  • Hero Member
  • *****
  • Mensajes: 12905
  • Karma: 377
Re:Consumo de recursos
« Respuesta #9 en: Junio 10, 2019, 02:26:14 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