Comprimir proceso en la RAM

Iniciado por z3nth10n, 24 Julio 2013, 17:35 PM

0 Miembros y 2 Visitantes están viendo este tema.

z3nth10n

Hola buenas, quería saber si es posible ya que hice un programa que bueno añade contactos a Skype (y de por ahí me saqué una lista de más de 4000 contactos)

Agregue cosa de 2000 y cuando terminó de agregar gente, el proceso el exe pesaba cosa de 970 mb en la ram... Ya se que si comprimo el proceso, va a aumentar el rendimiento del procesador...

Hay alguna forma?

Un saludo.

Interesados hablad por Discord.

Eleкtro

#1
No entiendo como puedes hacerte llamar "programador" en todos los lenguajes orientados a objetos que dices saber, cuando nisiquiera entiendes los conceptos básicos.

-> ¿Que es un Object?

-> New Operator

-> Disposing Objects

Citarnew Allocates memory for an object or array of objects of type-name from the free store and returns a suitably typed, nonzero pointer to the object.



Si alojas memória para un objeto de Skype4com, luego tendrás que liberar la memória del objeto después de haber terminado su utilización... ¿NO TE PARECE?



Nunca le hablo a nadie en plan: "Todos nacemos sabiendo esto, lammer", porque no me gusta la gente que habla como si fuesen superiores a otros, y yo no soy ningún Pro,
Pero es que tu proclamas y alardeas de saber mucho y luego nada Ikillnukes, nada de nada, déjate el copy/paste y lee un libro.


PD: Esta pregunta me ha sacado de quizio, lo siento mucho por las mayúsculas (son libres de editar el mensaje, moderadores).








El Benjo

#2
Bueno, no creo entender bien por qué los contactos de te ocupan tanto espacio en tu aplicación, pero no creo que los necesites todos en memoria, si este es el caso lo que deberías hacer es guardarlos en disco y cargarlos en memoria sólo cuando los necesites.

Editado: Electro, esa tampoco es manera de responderle a alguien que está pidiendo ayuda.
www.es.neftis-ai.com

Sí hay un mejor lenguaje de programación y es ese con el que puedes desarrollar tus objetivos.

z3nth10n

#3
Es que ya le he sacado muchas veces de quicio xD

No yo me refiero en el mismo proceso.. Es que por cada contacto que agrega se añaden como cosa de 500kbs de ram :-\

PD: Eso es lo que pregunto si se puede comprimir... Ya se que existen los disposes y todo eso, y que en bruto no se puede comprimir el proceso en sí, se puede siempre probar a quitar sub-procesos, pero como ya sabrás los sub-procesos que yo tengo no son mas que 2 for each, un regex y una función para agregar gente...

Interesados hablad por Discord.

Eleкtro

#4
@ElBenjo
Creeme si te digo que soy muy tolerante y me gusta proporcionarle ayuda a los demás,

Pero una cosa es pedir ayuda para salir de un apuro, o pedir ayuda con intención de aprender, y otra cosa muy distinta es que alguien diga que se considera programador desde hace medio año o así, cuando nisiquiera se ha leido los operadores y encima hace este tipo de preguntas tán básicas!, es que todo lo haces a base de copy&pastes! ya basta tio, ¿Quien puede aguantar estas preguntas?, yo no!.

Cita de: Ikillnukes en 24 Julio 2013, 21:57 PMNo yo me refiero en el mismo proceso.. Es que por cada contacto que agrega se añaden como cosa de 500kbs de ram :-\

Deberías leer los enlaces que te puse más arriba, leer sobre objetos en general, dejate de "comprimir proceso en ram" o "quitar subprocesos" y chorradas tremendas no tiene sentido nada de lo que estás diciendo, intenta entender LEYENDO y luego busca el fallo y arreglalo, libera el objeto!.

EDITO: no te vendria nada mal tampoco usar el analizador de código de VisualStudio.








z3nth10n

Hombre como quien dice año y medio... Tu ya sabes que me puse hace 3 días..

PD: Se puede liberar memoria mientras se hace el proceso sin que se cierre el form y todo eso?

PDS: Ara me leo el manual y salgo de dudas ;)

PDSS: Voy a salir un ratillo así que, puede que tarde algo más de lo esperado en contestar (Ya hasta mañana si eso xD)

Interesados hablad por Discord.

kub0x

Ikillnukes, la mejor manera de no tener que "COMPRIMIR" (:lol) los datos en la RAM es escribir código funcional, el cual no provoque dichas fugas de memoria. Reutilización de Objetos, liberación de recursos. Vamos, un usar y tirar de toda la vida para que me entiendas :D

Aun así, podrías echarle un vistazo al Recolector de basura (Gargabe Colector), que es el encargado de liberar los objetos y recursos que tu aplicación no está utilizando. Es automático y trabaja en segundo plano, pero perfectamente lo puedes llamar desde tu aplicación, aunque yo lo considero una mala prática, ya que resta eficiencia y velocidad a la aplicación.

Saludos!
Viejos siempre viejos,
Ellos tienen el poder,
Y la juventud,
¡En el ataúd! Criaturas Al poder.

Visita mi perfil en ResearchGate


Eleкtro

#7
...!!!

Llevas mucho, mucho tiempo programando en un lenguaje orientado a objetos sin saber que coj**** es un objeto, ¿Como es posible?, ahora te das cuenta que los copy&paste no te van a poder resolver todos tus problemas.

Cita de: Ikillnukes en 24 Julio 2013, 23:07 PMPD: Se puede liberar memoria mientras se hace el proceso sin que se cierre el form y todo eso?

A lo que llamas "proceso", indaga en esa subrutina, fíjate en lo que "abres" y en lo que "cierras" o lo que NO "cierras", eso es todo lo que necesitas saber.

Intenta entender como funcionan las cosas, no es necesario ser un experto, repito que yo no lo soy, pero todos podemos poner algo de nuestra parte para leer las definiciones, intentar entenderlas, y practicar códigos para aprender.

Saludos.








kub0x

Y recuerda: mas importante que la prática es la teoría, sino es una pérdida de tiempo. No pierdes nada por leer un par de definiciones e intentar asimilarlas para entender el mundo de la POO (programación orientada a objetos).

En este mundo documentarse antes de implementar es esencial. Picar código es lo último que se debe de hacer, primero se debe exponer el problema y hallar una solución a éste. Si algo me ha enseñado esta vida es que aunque tengas una idea cojonuda, nunca la debes plasmar sin documentarla correctamente, ya que pierdes el tiempo escribiendo código que podría ser mas eficiente.

Dale, ponte las gafas si tienes, y a leer un poquito jeje seguro que algún día dejarás de preguntar por estos lares y serás capaz de programar sin ayuda.

Saludos!
Viejos siempre viejos,
Ellos tienen el poder,
Y la juventud,
¡En el ataúd! Criaturas Al poder.

Visita mi perfil en ResearchGate


El Benjo

Pues dejando a un lado si sabes o no hacer las cosas, quiero preguntarte algo sobre este programa tuyo en particular.

La manera en que tu aplicación almacena los contactos es mediante objetos? (Es decir, por cada contacto que agrega se hace más grande un arreglo de objetos de alguna clase que creaste tú o una tercera persona)

O sólo se agrega la dirección del contacto como un nuevo indice en un arreglo de Cadenas?

Utilizas más de un arreglo de cualquiera de los tipos mencionados antes durante el proceso? Me refiero a si cargas los datos en algún arreglo temporal antes del definitivo.

Y por último, tu proceso para cargar los contactos utiliza recursividad en alguna parte?

Cualquiera de los motivos mencionados anteriormente me parece buen candidato para que tu aplicación use tanta memoria.

Ah, se me olvidaba: en las respuestas anteriores se hacía mención de que sólo copeas código y esas cosas ¿Cuanto de ese código de tu aplicación es tuyo?

Un saludo y espero que no necesites demasiado de nuestra ayuda para resolver este problema.
www.es.neftis-ai.com

Sí hay un mejor lenguaje de programación y es ese con el que puedes desarrollar tus objetivos.