Domanda

Nel progettare qualsiasi applicazione desktop, ci sono delle regole generali su quanta memoria dovrebbe usare l'applicazione?

Per applicazioni pesanti, queste possono essere facilmente comprese o almeno profilate come Firefox o Google Chrome. Ma per utility più piccole o applicazioni line-of-business, quanto costa una quantità accettabile di utilizzo della memoria?

Ho chiesto perché di recente mi sono imbattuto in un compromesso tra utilizzo della memoria e prestazioni e mi chiedo se ci sia un consenso generale al riguardo?

EDIT: la piattaforma è Windows XP per gli utenti con una macchina in grado di eseguire applicazioni Internet avanzate.

Il mio specifico problema di compromesso riguarda la memorizzazione nella cache di molte immagini in memoria. Se possibile, mi piacerebbe avere la mia cache dell'app quanto la memoria dell'utente consentirà. L'ho fatto in modo che l'applicazione venga memorizzata nella cache fino a un certo limite massimo considerando la pressione della memoria al momento. .

Ma quale sarebbe un buon numero? Come ne trovi uno? Questo è il punto che sto chiedendo.

È stato utile?

Soluzione

Non esiste una risposta assoluta per questo. Dipende da troppe variabili.

Ecco alcuni compromessi da considerare:

  • Per quale dispositivo / piattaforma stai sviluppando?
  • Ti aspetti che l'utente utilizzi questo software come scopo principale per il proprio computer (ad esempio, forse stai sviluppando un qualche tipo di software server)
  • Chi è il tuo pubblico di destinazione, gli utenti domestici? utenti esperti?
  • Stai realizzando aspettative realistiche per la quantità di RAM che un utente avrà?
  • Stai prendendo in considerazione che l'utente utilizzerà anche molti altri software su quel computer?

A volte è possibile avere la tua torta e mangiarla anche tu. Ad esempio, se stavi leggendo un file e riscrivendolo, potresti leggerlo pezzo per pezzo invece di leggere l'intero file in memoria e poi scriverlo. In questo caso hai un migliore utilizzo della memoria e nessuna riduzione della velocità.

In genere consiglierei di usare più RAM per ottenere una migliore velocità se necessario. Ma solo se i requisiti di RAM sono realistici per il tuo pubblico di destinazione. Ad esempio, se ti aspetti che un utente domestico con 1 GB di RAM utilizzi il tuo programma, non utilizzare tu stesso 600 MB di RAM.

Valuta di utilizzare più RAM in questa istanza per ottenere una migliore velocità e per ottimizzare un'altra parte del codice per utilizzare meno RAM.

Modifica

Informazioni sulla situazione specifica delle immagini memorizzate nella cache. Penso che sarebbe meglio per te consentire all'utente di impostare la quantità di cache che vorrebbero eseguire come opzione. In questo modo le persone con molta RAM possono aumentarla per prestazioni migliori e le persone con poca RAM possono abbassarla.

Altri suggerimenti

Questo dipende interamente dalla piattaforma di destinazione, che è più o meno una decisione aziendale. Più memoria avrai bisogno, meno clienti saranno in grado di utilizzare il tuo software. Alcune domande da porre: quanta memoria hanno installato i tuoi clienti (o potenziali clienti) nei loro computer? Quali altre applicazioni eseguiranno contemporaneamente alla tua applicazione? Si presume che la tua applicazione sia in esecuzione esclusivamente (come un gioco per computer a schermo intero) o un'utilità che dovrebbe essere eseguita principalmente in background o essere cambiata da altre applicazioni spesso?

Hear è un esempio di sondaggio che mostra una distribuzione di RAM installata nei sistemi di persone che giocano a giochi via Steam (fonte: Valve - Survey Summary Data ):

  • Meno di 96 Mb 0,01%
  • Da 96 Mb a 127 Mb 0,01%
  • da 128 Mb a 255 Mb 0,21%
  • Da 256 Mb a 511 Mb 5,33%
  • Da 512 Mb a 999 Mb 19,81%
  • da 1 GB a 1,49 GB 30,16%
  • da 1,5 GB a 1,99 GB 6,10%
  • 2,0 Gb 38,37%

Una conclusione che trarrei da un sondaggio come questo nel mio dominio (giochi per computer) è che posso ragionevolmente aspettarmi che quasi tutti i nostri utenti abbiano 512 MB o più e la stragrande maggioranza abbia 1 GB o più. Per un gioco per computer che dovrebbe funzionare in esclusiva, ciò significa che lavorare con un set di circa 400 MB è piuttosto sicuro e non limiterà quasi nessuno, e se fornisce un valore aggiunto significativo per il prodotto, potrebbe avere senso avere un set funzionante circa 800 MB.

Dipende dall'hardware del PC di destinazione. Se l'applicazione utilizza troppa memoria, sarà lenta durante le pagine di Windows. TEST! Prova entrambe le opzioni nel tuo compromesso e alcune in mezzo se ha senso. Esegui i test su una macchina tipica che gli utenti utilizzerebbero e con un numero ragionevole di altre applicazioni aperte. Quindi per la maggior parte delle persone che è Outlook e probabilmente un'istanza o 2 di Internet Explorer (o il client / browser di posta di tua scelta). Lavoro in un'organizzazione in cui è probabile che anche gli usi della mia applicazione eseguano altre applicazioni personalizzate, quindi testiamo anche con quelli in esecuzione. Abbiamo scoperto che la nostra applicazione utilizzava troppa memoria e rende dolorosamente lenta la commutazione delle applicazioni, quindi abbiamo leggermente rallentato la nostra applicazione per ridurne l'utilizzo. Se sei interessato, il nostro hardware di destinazione era originariamente macchine da 512 Mb, poiché era quello che era la nostra comune workstation standard specifica. Diversi PC hanno dovuto essere aggiornati a 1 GB anche se questa applicazione. Ora abbiamo ridotto un po 'il suo utilizzo della RAM, ma è scritto in VB .NET e la maggior parte della memoria utilizzata sembra essere il framework. PerfMon afferma che il processo sta usando circa 200 Mb (picco) ma che l'heap gestito è solo di circa 2 Mb!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top