1. O objetivo de fazer isso:
1. Eficiência (mais importante)
2. Legabilidade, fácil de manter no estágio posterior. (Também importante)
2. Requisitos para otimização de código:
1. Reduza o volume do código.
2. Melhore a eficiência de execução do código.
3. Otimização do código comumente usado:
1. Tente reutilizar objetos:
Especialmente a reutilização de objetos de string. O splicing de cordas mais usado:
Ao encontrar um limpeza frequente de string. Lembre -se de usar StringBuilder/StringBuffer
Por exemplo:
Lista de ArrayList <String>; StringBuilder Builder = new StringBuilder ();
Razão: as máquinas virtuais Java não apenas precisam gastar tempo gerando objetos, mas também precisam gastar tempo processando e reciclando objetos.
2. Use variáveis locais sempre que possível:
As variáveis locais são criadas na pilha e são criadas rapidamente e desaparecem automaticamente após o uso, sem coleta adicional de lixo.
Variáveis estáticas, variáveis de instância, etc. são criadas na pilha, e a velocidade da criação é lenta e também se baseia no mecanismo de coleta de lixo Java para processar.
3. Feche o fluxo no tempo:
No desenvolvimento do programa Java, após a conclusão das operações de E/S e do banco de dados, você deve se lembrar de fechar o fluxo.
Causa: não fechar o fluxo pode causar ótimas despesas gerais no sistema e pode até ter sérias conseqüências para os dados.
4. Use carregamento preguiçoso
Carregamento preguiçoso: crie este objeto somente quando ele deve ser usado.
Por exemplo:
String prefix = "gebi";
Substitua por:
if ("laowang" .equals (nome)) {string prefix = "gebi";5. Evite usar o uso de ... pegue em loops, use, tente ... pegar fora do loop
6. Tira ... a captura não deve ser muito grande.
Não coloque todo o código inútil, ou seja, a exceção não será lançada no bloco de tentativa ... Catch e reduza o tamanho da tentativa ... o bloco de código de captura.
Garanta a legibilidade, manutenção e robustez do código.
7. Tente evitar a criação de referências a objetos dentro do loop.
Especialmente quando o volume de circulação é grande.
while (i <1000) {object = new Object ();Recomenda -se modificá -lo para:
Objeto objeto = null;
Toda vez que o novo objeto () é novo, o objeto de objeto aponta para o objeto Objeto.
Quando há muitos loops, por exemplo, o primeiro tipo, a JVM criará 1.000 referências a objetos, enquanto o segundo tipo possui apenas uma referência de objeto na memória. Isso salva muito o espaço de memória.
8. Não use variáveis estáticas à vontade.
Quando um objeto é referenciado por uma variável declarada estática, o coletor de lixo Java não limpa a memória da pilha ocupada pelo objeto.
A memória da pilha ocupada pela variável estática não é liberada até o programa onde a variável está localizada. Isto é, ciclo de vida variável estática = ciclo de vida da classe.
9. Não crie alguns objetos não utilizados e não importe algumas classes não utilizadas.
10. Use fluxos de E/S em buffer:
Os fluxos de E/S em buffer podem melhorar bastante a eficiência da E/S. BufferWriter, BufferEredReader, BufferInputStream, BufferoudOutputStream.
11. Converta os dados de embalagem em strings a serem usados: ToString
Número inteiro i = 1;
Converter dados de embalagem em ranking de velocidade do método da string:
I.ToString> String.valueof (i)> "" + i
12. Eficiência de travessia do mapa: conjunto de entrada> Keyset
// Entrada () para (entrada <string, string> Entrada: map.entryset ()) {string key = Entry.getKey (); : " + value);} // compare para cima e para baixo // keySet () para (string key: map.keyset ()) {string value = map.get (key); system.out.println (key +": " + valor);}13. Sobre a travessia da coleção do iterador e foreach ().
Introdução ao algoritmo diz: Os algoritmos destinam -se a melhorar a eficiência do espaço e a eficiência do tempo. Mas muitas vezes tempo e espaço não podem coexistir.
Eficiência de tempo: iterador> foreach ()
Código Legabilidade: foreach ()> iterador
// ITERATOR SET <Entrada <String, String >> Entrada = Map.entrySet (); String> Entrada = ITER.Next ();
contraste:
// foreach () para (entrada <string, string> Entrada: map.entrySet ()) {string key = Entry.getKey (); : " + valor);}Pessoalmente, acredito que é recomendável usar o iterador para atravessar a coleção ao processar big data.
No entanto, para pequeno processamento de dados, o foreach () ainda é usado para legibilidade e manutenção posterior.
Ambos devem ser dominados ao usá -los em combinação.