Movatterモバイル変換


[0]ホーム

URL:


Skip to content
DEV Community
Log in Create account

DEV Community

Java Efetivo (livro)
Java Efetivo (livro)

Posted on

Item 67: Seja criterioso ao otimizar

1. Evitar Otimização Prematura
Principais máximas:

  • Muitas vezes, o desempenho é sacrificado em nome de otimizações desnecessárias.
  • Otimização prematura é considerada a "raiz de todo o mal" na programação.

As regras recomendadas são:

  • Regra 1: Não otimize.
  • Regra 2: Só otimize quando a necessidade estiver clara e inevitável.

2. Foque na Arquitetura de Código Clara e Correta

  • Objetivo inicial: Crie programas bem-estruturados e de fácil manutenção antes de focar em desempenho.
  • Se a base arquitetural estiver sólida, otimizações podem ser adicionadas posteriormente sem comprometer a integridade do código.
  • Encapsulamento: Utilize a ocultação de informações para isolar as escolhas de design, facilitando mudanças e melhorias locais sem impactar o sistema como um todo.

3. Considere o Desempenho no Design Inicial, mas Evite Compromissos Prematuros

  • Durante o design, evite escolhas que restrinjam o desempenho futuro, especialmente em:
  • APIs: Certifique-se de que métodos críticos não adicionem penalidades de desempenho, como a criação de objetos desnecessários.
  • Formatação de dados persistentes: Escolha formatos de dados que permitam flexibilidade e eficiência.
  • Exemplo de API ineficiente: O método getSize da classe java.awt.Component retorna um objeto Dimension mutável, exigindo alocações desnecessárias e impactando o desempenho.

4. Avalie Desempenho com Ferramentas Adequadas (Profiling e Benchmarking)

  • Profilers: Use ferramentas de profiling para identificar onde o programa consome mais tempo, evitando otimizar partes que não são o verdadeiro gargalo.
  • Exemplo de ferramenta: jmh (Java Microbenchmark Harness) é recomendado para micro-benchmarking de desempenho detalhado em Java.
  • O profiling ajuda a identificar algoritmos ineficientes (por exemplo, quadráticos) que devem ser substituídos por algoritmos mais eficientes antes de focar em melhorias de baixo nível.

5. Considerar Portabilidade e Variabilidade de Desempenho em Diferentes

  • Implementações e Hardware
  • O desempenho em Java pode variar amplamente entre versões de JVM, plataformas de hardware e configurações.
  • É importante verificar as otimizações em todas as plataformas de destino para garantir a consistência do desempenho.

6. Processo de Otimização Pós-Desenvolvimento
Passos recomendados:

  • Finalize o design e implemente uma versão clara e concisa do programa.
  • Avalie o desempenho geral. Se necessário, localize e otimize as áreas que mais afetam a performance.
  • Priorize a escolha de algoritmos eficientes; uma escolha inadequada de algoritmo não é resolvida com otimizações de baixo nível.
  • Meça o desempenho após cada ajuste para confirmar o impacto positivo.

Resumo Final

  • Boa prática: Concentre-se em escrever código de qualidade, pois um bom design é geralmente compatível com um desempenho eficiente.
  • Avaliação constante: Sempre meça o impacto das otimizações no desempenho.
  • Exemplo geral: Quando métodos críticos impactam a eficiência devido a objetos desnecessários, considere alternativas como tipos imutáveis ou métodos que retornam valores primitivos em vez de objetos, reduzindo alocações e tornando o programa mais rápido e eficiente.

Top comments(0)

Subscribe
pic
Create template

Templates let you quickly answer FAQs or store snippets for re-use.

Dismiss

Are you sure you want to hide this comment? It will become hidden in your post, but will still be visible via the comment'spermalink.

For further actions, you may consider blocking this person and/orreporting abuse

Resumos do Livro Java Efetivo feitos pro grupo de estudos Clube do Livro na comunidade de Java Girls Jug.
  • Location
    Florianópolis
  • Education
    Streets
  • Work
    Cibercafé
  • Joined

More fromJava Efetivo (livro)

DEV Community

We're a place where coders share, stay up-to-date and grow their careers.

Log in Create account

[8]ページ先頭

©2009-2025 Movatter.jp