Pergunta

Na concepção de quaisquer aplicativos de desktop, existem regras gerais sobre quanta memória deve o aplicativo usa?

Para aplicações peso-pesado, aqueles podem ser facilmente compreendida ou, pelo menos, perfilado como o Firefox ou Google Chrome. Mas para utilitários menores ou aplicativo de linha de negócios, quanto é uma quantidade aceitável de uso de memória?

Eu perguntei porque eu tenho vindo recentemente através de um trade-off entre o uso de memória e desempenho e saber se há um consenso geral sobre isso?

EDIT:. Plataforma é o Windows XP para usuários com máquina apenas capaz de executar aplicações ricas para internet

Meu problema trade-off específica é de cerca de cache uma grande quantidade de imagens na memória. Se possível, eu gostaria de ter o meu cache do aplicativo, tanto quanto a memória do usuário permitir. Tenho feito isso para que o aplicativo irá armazenar em cache até um certo limite máximo pressão de memória considerando no momento. .

Mas o que seria um bom número? Como é que você venha com um? Esse é o ponto que eu estou pedindo.

Foi útil?

Solução

Não há uma resposta absoluta para isso. Isso depende de muitas variáveis.

Aqui estão alguns trade-offs para consideração:

  • O dispositivo / plataforma que você está desenvolvendo para?
  • Você espera que o seu utilizador para utilizar este software como o principal objetivo para o seu computador (exemplo, talvez você está desenvolvendo algum tipo de software de servidor)
  • Quem é o seu público-alvo, os usuários domésticos? usuários avançados?
  • Você está fazendo expectativas realistas para a quantidade de RAM um usuário terá?
  • Você está tomando em consideração que o usuário estará usando um monte de outros softwares no computador também?

Às vezes é possível ter seu bolo e comê-lo. Por exemplo, se você estivesse lendo um arquivo e escrevê-lo de volta, você pode lê-lo pedaço por pedaço em vez de ler o arquivo inteiro na memória e, em seguida, escrevê-lo fora. Neste caso, você tem melhor uso de memória, e sem diminuição da velocidade.

Eu geralmente recomendo usar mais memória RAM para conseguir maior velocidade, se necessário. Mas somente se os requisitos de RAM são realistas para o seu público-alvo. Por exemplo, se você espera que um usuário doméstico que tem 1 GB de RAM para usar o seu programa, então não use 600MB de RAM si mesmo.

Considere o uso de mais memória RAM neste exemplo, para conseguir maior velocidade, e para otimizar alguma outra parte do seu código para usar menos memória RAM.

Editar:

Sobre a sua situação específica de cache imagens. Eu acho que seria melhor para você para permitir que o usuário defina a quantidade de cache que eles gostariam de atuar como uma opção. Dessa forma, as pessoas com uma grande quantidade de RAM pode colocá-lo mais elevado para um melhor desempenho, e as pessoas com pouca memória RAM pode configurá-lo baixo.

Outras dicas

Este depende inteiramente da sua plataforma de destino, que é mais ou menos uma decisão de negócios. Quanto mais memória você precisa, menos os clientes serão capazes de usar seu software. Algumas perguntas a perguntar: Quanto de memória que seus clientes (ou potenciais clientes) ter instalado em seus computadores? Que outras aplicações que será executado simultaneamente com a sua aplicação? É a sua aplicação algo assumido para ser executado exclusivamente (como um jogo de computador de tela cheia), ou um utilitário que é suposto para ser executado principalmente no fundo, ou para ser ligado para ele de outras aplicações, muitas vezes?

Hear é um exemplo de uma pesquisa mostrando uma distribuição de RAM instalada em sistemas de pessoas jogando games via Steam (fonte: Valve - Pesquisa Resumo dados ):

  • Menos de 96 Mb de 0,01%
  • 96 Mb a 127 Mb de 0,01%
  • 128 Mb a 255 Mb 0,21%
  • 256 Mb a 511 Mb 5,33%
  • 512 Mb e 999 Mb 19,81%
  • 1 Gb para 1,49 Gb 30,16%
  • 1,5 Gb para 1,99 Gb 6,10%
  • 2.0 Gb 38,37%

A conclusão que eu gostaria de chamar de uma pesquisa como esta em meu domínio (jogos de computador) é que pode razoavelmente esperar quase todos os nossos usuários com 512 MB ou mais, e grande maioria com 1 GB ou mais. Para um jogo de computador que é suposto para executar exclusivo deste meio conjunto de trabalho em torno de 400 MB é bastante seguro e irá limitar a quase ninguém, e se ele fornece um valor acrescentado significativo para o produto, ele pode ter um sentido de ter um conjunto de trabalho cerca de 800 MB.

Isso depende do seu hardware alvo PC. Se seu aplicativo usa muita memória, então será lenta, enquanto páginas janelas. TESTE! Experimente ambas as opções em seu compromisso, e alguns entre eles se faz sentido. Execute os testes em uma máquina típica que seus usuários vão usar e com um número apreciável de outros aplicativos abertos. Assim, para a maioria das pessoas que é Outlook e, provavelmente, uma instância ou 2 do Internet Explorer (ou o cliente de email / navegador de sua escolha). Eu trabalho em uma organistion quando as utilizações do meu aplicativo também são susceptíveis de ser a execução de alguns outros aplicativos personalizados para que teste com aqueles que funcionam bem. Descobrimos que o nosso aplicativo usado muita memória, e faz mudar de aplicação dolorosamente lento portanto, ter abrandado nossa aplicação ligeiramente para reduzir seu uso de memória. Se você está interessado nosso hardware alvo era originalmente 512Mb máquinas becuase que era o que a nossa estação de trabalho de especificação padrão comum era. Vários PC teve que ser atualizado para 1Gb embora devido a esta aplicação. Temos agora aparado seu uso RAM um pouco, mas ele é escrito em VB .NET e a maioria da memória utilizada parece ser o quadro. PerfMon diz que o processo está usando aroung 200Mb (pico), mas que o heap gerenciado é apenas cerca de 2Mb!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top