Performance JAVA

7 respostas
thidaudt

Galera, alguém conhece algum livro, site qualquer coisa que tenha como assunto performance em java.
Algo como best pratices para ganho de performance de uma aplicação java, o que é melhor ou pior para a JVM.
Ex:. use enums ao invés de objetos statics por isso, isso e aquilo…
Supondo que é java 1.5 ou +.

Valeu… abs.

7 Respostas

H

Procure algo do tipo Java Tuning

http://java.sun.com/performance/reference/whitepapers/tuning.html

Sei que tem um livro que todos deveriam ler, se chama Effective Java do Joshua Bloch…

E

Algumas dicas minhas:

  1. Evite “+=” com strings, isso é veneno puro. Não importa se é em C# ou Java, o problema é exatamente o mesmo. Saiba usar o StringBuilder.
  2. Veja se seu banco de dados está com os índices corretos e adequados para suas consultas.
  3. Se for usar arquivos ou sockets, nunca acesse só um caracter ou um byte de cada vez. No mínimo, use um BufferedReader/Writer ou BufferedInput/OutputStream.
  4. Evite chamar 200 vezes o mesmo getter em uma mesma expressão ou método. Não tenha medo de criar variáveis locais.
  5. Se souber o que está fazendo, use double (ou talvez long) em vez de BigDecimal. O BigDecimal é muitas vezes usado indiscriminadamente porque não se parou para analisar o problema.
  6. Se for criar algum web service, prefira usar REST a SOAP, exceto se você precisar usar SOAP por motivos de interoperabilidade.
  7. Pense bem antes de fazer seu próprio código de ordenação ou busca. Pode ser que você esteja usando a estrutura de dados errada.
E

Quanto à história das enums ou objetos static, isso é só uma micro-otimização e não costuma fazer diferença nenhuma no mundo real. O correto, nesse caso, é usar o que for adequado para a legibilidade e manutenção de sua aplicação.

ViniGodoy

Esse site tem muito material interessante:
http://www.javaperformancetuning.com/

Mas também tem muito lixo. Por isso geralmente eu recomendo que o leia com cautela.

Agora, eu tenho algumas dicas a mais que o entanglement:

  1. Aprenda a usar um profiler: https://visualvm.dev.java.net/
  2. Existe um balanço delicado entre memória e processador. Entenda esse balanço;
  3. Conheça bem estruturas de dados, e como elas são implementadas no Java;
  4. Se pulou o passo um, aprenda a usar um profiler: https://visualvm.dev.java.net/
  5. Leia os artigos do Brian Goetz (inclusive os falando de performance): http://www.briangoetz.com/pubs.html
  6. Fuja de mitos. Entenda corretamente os custos e benefícios de sincronização, final e objetos imutáveis. Há muitos mitos de performance envolvendo esses caras;
  7. Conheça bem as tecnologias com as quais está trabalhando. Siga as boas práticas recomendadas pelo fabricante;
  8. Não faça otimização prematura. Otimize só quando necessário.
  9. Se pulou o passo um, aprenda a usar um profiler: https://visualvm.dev.java.net/
  10. Mantenha o código bem refatorado e bem organizado. É mais fácil otimizar código bem-feito do que mal feito.

Dê uma lida também nesse tópico, com mais comentários sobre performance: http://www.guj.com.br/posts/list/15/31346.java#989991

Marky.Vasconcelos

Uma dica muito simples sobre performance, use (s.lenght() == 0) para verificar se uma String é vazia invés de .equals("").

O equals da classe String faz varias comparações desnecessarias para o caso de vazio, então é mais fácil comparar se seu tamanho é zero. Essa comparação foi encapsulada em isEmpty da classe String.

Em pequenos casos não faz muita diferença, mas quando voce precisa processar milhares de informações esse simples cuidado já traz alguma diferença visivel.

E

Marky.Vasconcelos:
Uma dica muito simples sobre performance, use (s.lenght() == 0) para verificar se uma String é vazia invés de .equals("").

O equals da classe String faz varias comparações desnecessarias para o caso de vazio, então é mais fácil comparar se seu tamanho é zero. Essa comparação foi encapsulada em isEmpty da classe String.

Em pequenos casos não faz muita diferença, mas quando voce precisa processar milhares de informações esse simples cuidado já traz alguma diferença visivel.

http://download-llnw.oracle.com/javase/6/docs/api/java/lang/String.html#isEmpty()

Luiz_Aguiar

Não se esqueça… evite se matar prematuramente pensando em performance, desenvolva sua aplicação com boas práticas e tudo mais, e na metida que vai finalizando as “partes”, ai sim tu vais trabalhando a performance onde for mais necessário.

[]s

Criado 4 de outubro de 2010
Ultima resposta 4 de out. de 2010
Respostas 7
Participantes 6