1. Le but de notre fait:
1. Efficacité (le plus important)
2. LIBIBILITÉ, FACILE À NEVORT À LA STADE DÉTERNE. (Également important)
2. Exigences d'optimisation du code:
1. Réduisez le volume du code.
2. Améliorer l'efficacité du code du code.
3. Optimisation du code couramment utilisé:
1. Essayez de réutiliser les objets:
Surtout la réutilisation des objets de chaîne. L'épissage de cordes le plus utilisé:
Lors de la rencontre de l'essuyage fréquent de la chaîne. N'oubliez pas d'utiliser StringBuilder / StringBuffer
Par exemple:
ArrayList <string> Liste; StringBuilder Builder = new StringBuilder (); pour (String S: List) {Builder.APPEND (S);} Résultat de chaîne = Builder.ToString ();Raison: les machines virtuelles Java ont non seulement besoin de passer du temps à générer des objets, mais doivent également passer du temps à traiter et recycler des objets.
2. Utilisez des variables locales dans la mesure du possible:
Les variables locales sont créées dans la pile et sont créées rapidement et disparaissent automatiquement après utilisation, sans collecte de déchets supplémentaires.
Des variables statiques, des variables d'instance, etc. sont créées dans le tas, et la vitesse de création est lente, et elle s'appuie également sur le mécanisme de collecte des ordures Java à traiter.
3. Fermez le flux dans le temps:
Dans le développement du programme Java, une fois les opérations d'E / S et de base de données terminées, vous devez vous rappeler de fermer le flux.
Cause: ne pas fermer le flux peut provoquer de grandes frais généraux vers le système et peut même avoir de graves conséquences pour les données.
4. Utilisez le chargement paresseux
Chargement paresseux: créez cet objet uniquement lorsqu'il doit être utilisé.
Par exemple:
String Prefix = "Gebi";
Remplacer par:
if ("laowang" .equals (name)) {String Prefix = "Gebi";5. Évitez d'utiliser d'essayer ... Catch In Loops, utilisez essayez ... Catchez à l'extérieur de la boucle
6. Troison ... Les prises ne doivent pas être trop grandes.
Ne mettez pas tout le code inutile, c'est-à-dire que l'exception ne sera pas jetée dans le bloc d'essai ... Catch et réduira la taille du bloc d'essai ... Catch Code.
Assurez-vous la lisibilité, la maintenance et la robustesse du code.
7. Essayez d'éviter de créer des références aux objets dans la boucle.
Surtout lorsque le volume de circulation est grand.
while (i <1000) {objet objet = nouveau objet ();Il est recommandé de le modifier à:
Objet objet = null; while (i <1000) {objet = nouveau objet ();Chaque fois que le nouvel objet () est nouveau, la référence de l'objet objet pointe vers l'objet objet.
Lorsqu'il existe de nombreuses boucles, par exemple, le premier type, le JVM créera 1 000 références aux objets, tandis que le deuxième type n'a qu'une seule référence d'objet en mémoire. Cela économise considérablement l'espace mémoire.
8. N'utilisez pas de variables statiques à volonté.
Lorsqu'un objet est référencé par une variable déclarée statique, le collecteur de déchets Java ne nettoie pas la mémoire du tas occupé par l'objet.
La mémoire de tas occupée par la variable statique n'est pas publiée avant le programme où la variable est située. C'est-à-dire le cycle de vie variable statique = cycle de vie de classe.
9. Ne créez pas de quelques objets inutilisés et n'importez pas de classes inutilisées.
10. Utilisez des flux d'E / S tamponnés:
Les flux d'E / S tamponnés peuvent considérablement améliorer l'efficacité des E / S. BufferedWriter, BufferedReader, BufferedInputStream, BufferedOutputStream.
11. Convertir les données de classe d'emballage en chaînes à utiliser: Tostring
Entier i = 1;
Classement de vitesse de la conversion de méthode des données de classe de wrapper en chaîne:
i.toString> string.valueof (i)> "" + i
12.MAP Efficacité de traversée: entrée> Keyset
// EntrySet () pour (entrée <String, String> Entrée: Map.EntrySet ()) {String Key = Entry.getKey (); String Value = Entry.getValue (); : "+ valeur);} // Comparez up and down // keySet () for (String key: map.keyset ()) {String value = map.get (key); system.out.println (key +": "+ valeur);}13. À propos de la traversée de la collection d'Iterator et Foreach ().
L'introduction à l'algorithme dit: les algorithmes sont destinés à améliorer l'efficacité spatiale et l'efficacité du temps. Mais souvent le temps et l'espace ne peuvent pas coexister.
Efficacité du temps: iterator> foreach ()
Code lisibilité: foreach ()> iterator
// iterator set <entrée <string, string >> entryset = map.entryset (); String> entrée = iter.next (); String Key = Entry.getKey ();
contraste:
// foreach () pour (entrée <chaîne, string> entrée: map.entryset ()) {string key = entry.getKey (); : "+ valeur);}Personnellement, je crois qu'il est recommandé d'utiliser Iterator pour traverser la collecte lors du traitement des mégadonnées.
Cependant, pour le traitement des petites données, foreach () est toujours utilisé pour la lisibilité et la maintenance ultérieure.
Les deux doivent être maîtrisés lors de leur utilisation en combinaison.