Question

Lors de la conception d'applications de bureau, existe-t-il des règles générales sur la quantité de mémoire utilisée par l'application?

Pour les applications lourdes, celles-ci peuvent être facilement comprises ou au moins profilées telles que Firefox ou Google Chrome. Mais pour les petits utilitaires ou les applications métiers, quelle est l’utilisation acceptable de la mémoire?

J'ai demandé parce que je venais de trouver un compromis entre l'utilisation de la mémoire et les performances et je me demandais s'il y avait un consensus général à ce sujet?

MODIFIER: La plate-forme est Windows XP pour les utilisateurs disposant uniquement d'une machine capable d'exécuter des applications Internet riches.

Mon problème de compromis spécifique concerne la mise en cache de nombreuses images en mémoire. Si possible, j'aimerais avoir le cache de mes applications autant que la mémoire de l'utilisateur le permettra. Je l’ai fait pour que l’application mette en cache jusqu’à une certaine limite maximale en tenant compte de la pression de la mémoire pour le moment. .

Mais quel serait un bon nombre? Comment venez-vous avec un? C'est ce que je demande.

Était-ce utile?

La solution

Il n’ya pas de réponse absolue à cela. Cela dépend de trop de variables.

Voici quelques compromis à prendre en compte:

  • Pour quel appareil / plate-forme développez-vous?
  • Vous attendez-vous à ce que vos utilisateurs utilisent ce logiciel comme principal objectif de leur ordinateur (par exemple, vous développez une sorte de logiciel serveur)
  • Quel est votre public cible, les utilisateurs à domicile? utilisateurs avec pouvoir?
  • Faites-vous des attentes réalistes quant à la quantité de RAM qu'un utilisateur aura?
  • Pensez-vous que l'utilisateur utilisera également de nombreux autres logiciels sur cet ordinateur?

Parfois, il est possible d'avoir votre gâteau et de le manger aussi. Par exemple, si vous lisiez et réécriviez un fichier, vous pourriez le lire morceau par morceau au lieu de lire le fichier entier en mémoire, puis de l'écrire. Dans ce cas, vous utilisez mieux la mémoire et aucune diminution de la vitesse.

Je recommanderais généralement d’utiliser plus de RAM pour obtenir une meilleure vitesse si vous le devez. Mais seulement si les exigences de RAM sont réalistes pour votre public cible. Par exemple, si vous vous attendez à ce qu'un utilisateur local disposant de 1 Go de RAM utilise votre programme, n'utilisez pas 600 Mo de RAM vous-même.

Pensez à utiliser plus de RAM dans cette instance pour obtenir une meilleure vitesse et à optimiser une autre partie de votre code afin d’utiliser moins de RAM.

Modifier:

À propos de votre situation spécifique de mise en cache des images. Je pense qu'il serait préférable pour vous de permettre à l'utilisateur de définir la quantité de mise en cache qu'il souhaite effectuer en tant qu'option. De cette manière, les personnes disposant de beaucoup de RAM peuvent augmenter les performances et améliorer les performances, tandis que les personnes disposant de peu de RAM peuvent les réduire.

Autres conseils

Cela dépend entièrement de votre plate-forme cible, qui est plus ou moins une décision commerciale. Plus vous aurez besoin de mémoire, moins vos clients pourront utiliser votre logiciel. Quelques questions à poser: Quelle est la quantité de mémoire installée par vos clients (ou clients potentiels) sur leurs ordinateurs? Quelles autres applications vont-ils exécuter simultanément avec votre application? Votre application est-elle supposée fonctionner exclusivement (comme un jeu vidéo en plein écran), ou un utilitaire censé fonctionner principalement en arrière-plan, ou y être utilisé à partir d’autres applications?

Hear est un exemple d’enquête montrant une répartition de la mémoire RAM installée dans des systèmes de jeux de personnes via Steam (source: Valve - Données récapitulatives de l'enquête ):

  • Moins de 96 Mo 0.01%
  • 96 Mo à 127 Mo 0,01%
  • 128 Mo à 255 Mo 0,21%
  • 256 Mo à 511 Mo 5,33%
  • 512 Mo à 999 Mo 19,81%
  • 1 Go à 1,49 Go 30,16%
  • 1,5 Go à 1,99 Go 6,10%
  • 2,0 Gb 38,37%

Une conclusion que je tirerais d’un sondage comme celui-ci dans mon domaine (jeux informatiques) est que je peux raisonnablement s’attendre à ce que la quasi-totalité de nos utilisateurs disposent de 512 Mo ou plus, et de la grande majorité d’au moins 1 Go. Pour un jeu sur ordinateur qui est supposé fonctionner en exclusivité, cela signifie que l'utilisation d'un ensemble d'environ 400 Mo est plutôt sûre et ne limitera quasiment personne. Si cela apporte une valeur ajoutée significative au produit, il peut sembler utile de disposer d'un ensemble fonctionnel. environ 800 Mo.

Cela dépend du matériel de votre ordinateur cible. Si votre application utilise trop de mémoire, les pages Windows seront lentes. TESTER! Essayez les deux options dans votre compromis, et certaines entre les deux si cela vous semble logique. Exécutez les tests sur une machine typique utilisée par vos utilisateurs et avec un nombre raisonnable d’autres applications ouvertes. Donc, pour la plupart des gens, il s’agit d’Outlook et probablement d’une instance ou de 2 Internet Explorer (ou du client de messagerie / navigateur de votre choix). Je travaille dans une organisation où les utilisations de mon application sont également susceptibles d'exécuter d'autres applications personnalisées, de sorte que nous testons également celles qui fonctionnent. Nous avons constaté que notre application utilisait trop de mémoire et rendait le changement d'application extrêmement lent. Nous avons donc légèrement ralenti notre application pour réduire son utilisation de la mémoire. Si vous êtes intéressé, notre matériel cible était à l’origine des machines de 512 Mo, car c’était ce que notre station de travail standard standard était. Plusieurs PC ont dû être mis à niveau à 1Gb en raison de cette application. Nous avons maintenant réduit un peu son utilisation de la RAM, mais il est écrit en VB .NET et la majeure partie de la mémoire utilisée semble être le framework. PerfMon indique que le processus utilise environ 200 Mo (pic), mais que le segment de mémoire géré n’est que d’environ 2 Mo!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top