Cita de: penumbra en Enero 15, 2013, 08:31:12 PMEjem. justo estaba hablando de esto en otro tema xD. es cierto lo que dices., todas las variables independientemente del numero que esté dentro de ellas ocupan el mismo numero de bytes aunque no se si sean 8 bytes por variable ¿de donde sacaste ese dato?.
perdón por meter mi cuchara, en esta charla de "adultos" XD
En mi travesías por aprender GML, recuerdo una recomendación que se repite bastante, tanto que la tengo muy presente, y esta más o menos dice así: "procura usar variables locales siempre que puedas, evita usar variables globales". Luego se menciona que las variables globales no se destruyen al finalizar la ejecución del script y las locales sí.
A mi, la verdad, me parece una recomendación de poco valor, tomando en cuenta el hardware que se maneja hoy en día.Citar¿Creen que para no tener que utilizar la partícula "with" sea mejor crear las variables globales? ¿Ocupan más espacio las globales que las locales?
Creo que no hay diferencia en cuanto al tamaño de local y global. Hasta donde sé, a diferencia de los lenguajes 'mayores', GML maneja únicamente dos tipos de datos, string y real. Ahora, lo que determina el tamaño de una variable, no es el valor que almacena, sino su tipo de datos. Como todas las variables (globalesy locales) son REAL en GM, todas ocuparán el mismo espacio en RAM.
Si no mal recuerdo, en este caso, todas las variables de GM, ocuparían 8bytes en memoria. Para utilizar un Kilobyte de memoria, necesitarías tener 128 variables (un sprite , el que sea, ocupa más que esto). Para ocupar 1 mísero Megabyte de RAM con variables, necesitarías un juego con 131072 variables. Reto a un valiente a que haga un juego con 130000 variables distintas
Después del cálculo anterior, no no le veo sentido a eso de usar variables locales y evitar las globales. Para mi, bienvenidas sean las variables globales. Quizás hace 20 años me hubiera preocupado por no gastarme un megabyte de ram, pero no ahora. ;D
Y bueno tal vez ningún programador pueda llegar a 131072 variables que mensionas pero con estructuras de datos o arrays no es nada del otro mundo, una imagen en la ram se puede llevar varios megas.
Cita de: ferhand en Enero 15, 2013, 10:57:52 PMSobre los strings creo que tienes razón.
Saludos makero penumbra:
Cita de: penumbra en Enero 15, 2013, 08:31:12 PMSi las variables fueran números puede que sí tengan el mismo tamaño en "Ram", pero en cuanto a los "string" no lo creo. Un "string" es una cadena de caracteres, o sea un "array" de caracteres. Cada caracter pesa, creo que 1 Byte, en dependencia del tipo de codificación. Lo que indica que un "array" de tres caracteres ocupa más espacio que otro de cuatro. XD
perdón por meter mi cuchara, en esta charla de "adultos" XD
¡Si influye la cantidad! XD XD XD
Sería interesante saber si un número entero de más de una cifra ocupa un Byte o más. A mi en lo particular me parece que ocupa un byte por cifra... ???
Sobre lo de un byte por cifra como ya dijo penumbra en gm todas las variables "reales" ocupan el mismo numero de bytes.
Y bueno respondiendo a tu pregunta las globales y locales ocupan lo mismo como ya te respondieron, el único consejo que yo te daría es el dejar de usar las variable_get y set estás son lentas y no funcionaran en ningún gm siguiente y tampoco en ningún lenguaje de programación compilado, aunque bueno si no vas a cambiar de gm no veo mucho problema.