elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Curiosidad sobre optimización de memoria
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Curiosidad sobre optimización de memoria  (Leído 8,065 veces)
Meta


Desconectado Desconectado

Mensajes: 3.501



Ver Perfil WWW
Curiosidad sobre optimización de memoria
« en: 6 Diciembre 2009, 12:44 pm »

Hola:

Hace años, para que funcionace bien un programa, había que buscar la manera de que quepa en la memoria RAM. Hoy en día, ya nadie le importa, hay tanta RAM que ni se preocupan de estos recursos.

Antes ponía un integer así:

string saludo = "Hola. ¿Cómo están todos?"; // Así no optimizas la memoria, más bien la desperdicia.

Como resultado de salida muestra: Hola. ¿Cómo están todos?
Si te fijas hay 24 bytes y sobran muchos, ya que un int reserva mucha más memoria y es un tremendo desperdicio.


Hay que ponerlo así:

string saludo[3] = "Hola. ¿Cómo están todos?"; // Su salida cuenta del 0 al 3, es decir, de la H a la a. Con lo cual, sólo muestra la palabra Hola. Para que se vea completo hay que usar...

string saludo[23] = "Hola. ¿Cómo están todos?"; // Aquí ya se muestra la frase completa.

Lo que puse arriba es un ejemplo. Normalmente se hace con int.

En C#. ¿Cómo se hace la optimización de memoria?

Vale la pena optimizar memoria, ya que en programas grandes se nota la velocidad.

Saludo.


En línea

[D4N93R]
Wiki

Desconectado Desconectado

Mensajes: 1.646


My software never has bugs. Its just features!


Ver Perfil WWW
Re: Curiosidad sobre optimización de memoria
« Respuesta #1 en: 6 Diciembre 2009, 22:22 pm »

HOla,

Yo no soy un experto ni nada, pero dentro de lo que se, los lenguajes .Net tienen un Garbage Collector (GC), que se hace responsable por toda la data que queda en memoria sin que nadie apunte a ella. Es decir, en el momento que dejas de apuntar a una variable y el GC pasa por la memoria él se hace cargo de liberar los recursos..

Además puedes forzar a que pase el GC en el momento que quieras..

Creo que es algo así: GC.Collect();

saludos..


En línea

raul338


Desconectado Desconectado

Mensajes: 2.633


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: Curiosidad sobre optimización de memoria
« Respuesta #2 en: 6 Diciembre 2009, 22:47 pm »

Exacto, como dice D4N93R: el .net tiene su propio gestor de memoria. Pero es considerado mala practica llamarlo "a la fuerza"

Si utilizas clases (ya sean propias o del .net framework) puedes "liberarlas" usando (si disponen) el metodo Dispose
En línea

[D4N93R]
Wiki

Desconectado Desconectado

Mensajes: 1.646


My software never has bugs. Its just features!


Ver Perfil WWW
Re: Curiosidad sobre optimización de memoria
« Respuesta #3 en: 7 Diciembre 2009, 01:07 am »

Raul,

Es correcto, es "mala práctica" forzarlo, pero a veces es necesario dependiendo del caso. Además el método dispose funciona nada más cuando el objeto contiene parte en código nativo o llamadas al sistema.

En realidad lo mejor es dejar todo así y que .Net se encargue de todo.. esa es la idea principal no? xD

Saludos!
En línea

raul338


Desconectado Desconectado

Mensajes: 2.633


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: Curiosidad sobre optimización de memoria
« Respuesta #4 en: 7 Diciembre 2009, 02:13 am »

Concuerdo contigo D4N93R. Por eso dijimos que no hacia falta el "control de memoria"

En línea

[D4N93R]
Wiki

Desconectado Desconectado

Mensajes: 1.646


My software never has bugs. Its just features!


Ver Perfil WWW
Re: Curiosidad sobre optimización de memoria
« Respuesta #5 en: 7 Diciembre 2009, 02:57 am »

 ;D 
En línea

MazarD
Colaborador
***
Desconectado Desconectado

Mensajes: 885


mazard.info


Ver Perfil WWW
Re: Curiosidad sobre optimización de memoria
« Respuesta #6 en: 7 Diciembre 2009, 10:43 am »

Citar
string saludo = "Hola. ¿Cómo están todos?"; // Así no optimizas la memoria, más bien la desperdicia.
Porque se desperdicia memoria? se utiliza la justa, más algun puntero con la dirección de memória para redimensionar.
De todos modos en c# no puedes declarar cadenas de tamaño fijo, simplemente porque el ahorro de memória es mínimo, apenas algun puntero y puede que algún unsigned para guardar el tamaño.

En los lenguajes en los que se permite string[11] es más por motivos conceptuales y control de excepciones, una cadena que nunca pueda superar ese tamaño como una matricula o lo que sea y en caso contrario tire error.

Citar
Lo que puse arriba es un ejemplo. Normalmente se hace con int.
Puedes explicar eso? como se optimiza la memoria ocupada por un int? :S

Como dicen los compañeros más arriba, lo bueno de los lenguajes de alto nivel como .net y java es que en caso de que quedaran memory leaks está el garbage collector para solucionar el problema.
De todos modos siempre es bueno que no llegue a pasar eso, y que se libere la memoria automáticamente no significa que el código esté optimizado...

Saludos!
En línea

-Learn as if you were to live forever, live as if you were to die tomorrow-

http://www.mazard.info
irc://irc.freenode.org/elhacker.net
Meta


Desconectado Desconectado

Mensajes: 3.501



Ver Perfil WWW
Re: Curiosidad sobre optimización de memoria
« Respuesta #7 en: 8 Diciembre 2009, 00:39 am »

Entendido, ya no estamos 20 años atrás que esa época si se necesitaba optimizar.
En línea

[D4N93R]
Wiki

Desconectado Desconectado

Mensajes: 1.646


My software never has bugs. Its just features!


Ver Perfil WWW
Re: Curiosidad sobre optimización de memoria
« Respuesta #8 en: 8 Diciembre 2009, 02:37 am »

Igual puedes optimizar tus rutinas! eso siempre lo tendrás que hacer!

Saludos!
En línea

Foxy Rider


Desconectado Desconectado

Mensajes: 2.407


Deprecated


Ver Perfil WWW
Re: Curiosidad sobre optimización de memoria
« Respuesta #9 en: 8 Diciembre 2009, 04:51 am »

además, no tenés eliminación determinística, pero podés usar el using para "sugerir" la eliminación de un objeto pasado el scope (que implemente IDisposable) ...
otro detalle es que un cuellito de botella a veces es el Garbage Collector en si (en mono por ejemplo andan laburando a full con esto)

aunque, no capto la esencia del topic, optimizar el uso de memoria por rapidez o por economizar ? (la primera no tiene sentido, la segunda sí)

Citar
Entendido, ya no estamos 20 años atrás que esa época si se necesitaba optimizar.

indeed, aunque si tomar determinadas prácticas óptimas ...
(me encantaría extenderme en esto, pero tengo que irme )

Saludos ~
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
sobre la optimización de CGI
Desarrollo Web
nosoqui 1 2,046 Último mensaje 4 Septiembre 2011, 17:22 pm
por nosoqui
Triples de pitagoras C++ (Ayuda sobre optimizacion)
Programación C/C++
erest0r 2 8,005 Último mensaje 10 Septiembre 2013, 07:02 am
por erest0r
Ayuda, problema de optimización de memoria
GNU/Linux
JonaLamper 0 4,200 Último mensaje 27 Mayo 2015, 15:57 pm
por JonaLamper
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines