Pregunta

Al diseñar cualquier aplicación de escritorio, ¿existen reglas generales sobre cuánta memoria debe usar la aplicación?

Para aplicaciones pesadas, estas pueden ser fácilmente entendidas o al menos perfiladas como Firefox o Google Chrome. Pero para aplicaciones más pequeñas o aplicaciones de línea de negocio, ¿cuánto es una cantidad aceptable de uso de memoria?

Pregunté porque recientemente me encontré con un compromiso entre el uso de la memoria y el rendimiento y me pregunto si hay algún consenso general al respecto

EDITAR: la plataforma es Windows XP para usuarios con máquinas capaces de ejecutar aplicaciones de Internet completas.

Mi problema de compensación específico es el almacenamiento en caché de muchas imágenes en la memoria. Si es posible, me encantaría tener el caché de mi aplicación tanto como lo permita la memoria del usuario. Lo hice para que la aplicación se almacene en caché hasta cierto límite máximo considerando la presión de memoria en este momento. .

¿Pero cuál sería un buen número? ¿Cómo se te ocurre uno? Ese es el punto que estoy preguntando.

¿Fue útil?

Solución

No hay una respuesta absoluta para esto. Depende de demasiadas variables.

Aquí hay algunas compensaciones para su consideración:

  • ¿Para qué dispositivo / plataforma estás desarrollando?
  • ¿Espera que su usuario utilice este software como el objetivo principal de su computadora (por ejemplo, tal vez está desarrollando algún tipo de software de servidor)
  • ¿Quién es su público objetivo, usuarios domésticos? usuarios avanzados?
  • ¿Estás haciendo expectativas realistas sobre la cantidad de RAM que tendrá un usuario?
  • ¿Está teniendo en cuenta que el usuario también utilizará muchos otros programas en esa computadora?

A veces es posible tener tu pastel y comértelo también. Por ejemplo, si estaba leyendo un archivo y volviéndolo a escribir, podría leerlo fragmento por fragmento en lugar de leer todo el archivo en la memoria y luego escribirlo. En este caso, tiene un mejor uso de la memoria y no disminuye la velocidad.

En general, recomendaría usar más RAM para obtener una mejor velocidad si es necesario. Pero solo si los requisitos de RAM son realistas para su público objetivo. Por ejemplo, si espera que un usuario doméstico que tenga 1 GB de RAM use su programa, no use 600 MB de RAM usted mismo.

Considere usar más RAM en este caso para obtener una mejor velocidad y optimizar alguna otra parte de su código para usar menos RAM.

Edición :

Acerca de su situación específica de almacenamiento en caché de imágenes. Creo que sería mejor permitir que el usuario establezca la cantidad de almacenamiento en caché que le gustaría realizar como opción. De esa forma, las personas con mucha RAM pueden aumentar su rendimiento para un mejor rendimiento, y las personas con poca RAM pueden configurarlo bajo.

Otros consejos

Esto depende completamente de su plataforma de destino, que es más o menos una decisión comercial. Cuanta más memoria necesite, menos clientes podrán usar su software. Algunas preguntas para hacer: ¿Cuánta memoria tienen instalados sus clientes (o clientes potenciales) en sus computadoras? ¿Qué otras aplicaciones se ejecutarán simultáneamente con su aplicación? ¿Se supone que su aplicación se está ejecutando exclusivamente (como un juego de computadora de pantalla completa), o una utilidad que se supone que se ejecuta principalmente en segundo plano, o que se la cambia con frecuencia desde otras aplicaciones?

Hear es un ejemplo de una encuesta que muestra una distribución de RAM instalada en sistemas de personas que juegan juegos a través de Steam (fuente: Válvula - Datos de resumen de encuesta ):

  • Menos de 96 Mb 0.01%
  • 96 Mb a 127 Mb 0.01%
  • 128 Mb a 255 Mb 0.21%
  • 256 Mb a 511 Mb 5.33%
  • 512 Mb a 999 Mb 19.81%
  • 1 Gb a 1.49 Gb 30.16%
  • 1.5 Gb a 1.99 Gb 6.10%
  • 2.0 Gb 38.37%

Una conclusión que sacaría de una encuesta como esta en mi dominio (juegos de computadora) es que puedo esperar razonablemente que casi todos nuestros usuarios tengan 512 MB o más, y la gran mayoría tenga 1 GB o más. Para un juego de computadora que se supone que funciona exclusivamente, esto significa que un conjunto de trabajo de alrededor de 400 MB es bastante seguro y no limitará a casi nadie, y si proporciona un valor agregado significativo para el producto, puede tener sentido tener un conjunto de trabajo alrededor de 800 MB.

Esto depende del hardware de su PC de destino. Si su aplicación usa demasiada memoria, entonces será lenta mientras las páginas de Windows. ¡PRUEBA! Pruebe ambas opciones en su compromiso, y algunas intermedias si tiene sentido. Ejecute las pruebas en una máquina típica que usarían sus usuarios y con un número razonable de otras aplicaciones abiertas. Entonces, para la mayoría de las personas que es Outlook y probablemente una instancia o 2 de Internet Explorer (o el cliente / navegador de correo de su elección). Trabajo en una organización donde es probable que los usos de mi aplicación también ejecuten algunas otras aplicaciones personalizadas, por lo que también realizamos pruebas con las que se están ejecutando. Descubrimos que nuestra aplicación usaba demasiada memoria y hace que el cambio de aplicación sea muy lento, por lo que hemos reducido ligeramente nuestra aplicación para reducir su uso de memoria. Si está interesado, nuestro hardware de destino era originalmente máquinas de 512Mb porque esa era nuestra estación de trabajo estándar estándar común. Varias PC tuvieron que ser actualizadas a 1Gb a pesar de esta aplicación. Ahora hemos reducido un poco su uso de RAM, pero está escrito en VB .NET y la mayor parte de la memoria utilizada parece ser el marco. ¡PerfMon dice que el proceso está usando alrededor de 200Mb (pico) pero que el montón administrado es de solo 2Mb!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top