Pergunta

Em um aplicativo com um pequeno número de POJOs e lotes de métodos auxiliares que atuam sobre eles, o que é melhor em termos de performance: para fazer os singletons classes auxiliares ou para fazer a estática métodos

Foi útil?

Solução

Os métodos estáticos seria muito ligeiramente melhor desempenho e memória sábio:

  1. Evite (potencial) sobrecarga de chamadas de função virtual.
  2. memória Elimina a necessidade de uma instância real da classe.
  3. Elimina a necessidade de obter uma instância da classe quando você usá-lo.

Mas, honestamente, eu provavelmente ainda torná-lo um singleton de qualquer maneira. Os ganhos que obteria por não fazê-lo provavelmente tão pequena que eles iriam fazer zero diferença, mesmo em um ambiente móvel.

Outras dicas

Você pode evitar qualquer situação e torná-los aulas regulares?

Ignorando a pergunta desempenho, eu recomendo evitando singeltons e métodos estáticos para melhorar a sua capacidade de teste.

Singletons e métodos estáticos pode ser muito difícil de teste; a este respeito singletons são essencialmente métodos estáticos, mas com um nome diferente. Misko Hevery , que trabalha na equipe do Google Teste , tem alguns bons artigos sobre este assunto:

Não se preocupe com micro-otimizações absurdas como essa. Se preocupar com manutenção.

Parece que a aplicação é escrito em um estilo totalmente não-OO e poderia se beneficiar muito com eliminando a maioria desses "métodos auxiliares" e colocá-los onde eles pertencem, com os dados que operam.

Tomar a sua pergunta pelo valor de face, as chamadas estáticas provavelmente exigem a menor quantidade de energia da CPU. A razão é que os métodos normais são dinâmicos vinculados e exigir alguma pesquisa em tempo de execução enquanto os métodos estáticos são obrigados a tempo de compilação.

Dito isto, ele provavelmente não vai importar em sua aplicação. A diferença é muito pequena. Se sua aplicação faz qualquer coisa com gui, prestação xml, conexões de internet ou outra manipulação externa your'll achar que essas atividades anão as pesquisas Mathod simples por um fator enorme.

Mesmo se você não fizer isso, durante a criação de perfil você é mais provável encontrar um único gargalo segurando sua aplicação e descobrir que não é o lookup método, mas alguma lógica você fez o seu self. Por exemplo, você usou um ArrayList em vez de um hashset eo contém método de vir a ser caro.

Assim como o desempenho nestes casos realmente não importa, eu recomendo usar os singletons implementações acima dos métodos estáticos como o design é um pouco mais flexível. Embora fora das escolhas que você ofereceu gostaria de deixar cair as classes auxiliares inteiramente e in-line os métodos do seu pojo.

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