Java Language Réduire la quantité de cordes


Exemple

En Java, il est trop "facile" de créer de nombreuses instances de String qui ne sont pas nécessaires. Cela et d'autres raisons peuvent amener votre programme à avoir beaucoup de chaînes que le GC est en train de nettoyer.

Voici quelques façons de créer des instances de chaîne:

myString += "foo";

Ou pire, en boucle ou en récursion:

for (int i = 0; i < N; i++) {
    myString += "foo" + i;
}

Le problème est que chaque + crée une nouvelle chaîne (généralement, puisque les nouveaux compilateurs optimisent certains cas). Une optimisation possible peut être faite en utilisant StringBuilder ou StringBuffer :

StringBuffer sb = new StringBuffer(myString);
for (int i = 0; i < N; i++) {
    sb.append("foo").append(i);
}
myString = sb.toString();

Si vous générez souvent de longues chaînes (SQL par exemple), utilisez une API de génération de chaînes.

Autres choses à considérer:

  • Réduire l'utilisation de replace , substring - substring etc.
  • Évitez String.toArray() , en particulier dans le code fréquemment String.toArray() .
  • Les impressions de journal destinées à être filtrées (en raison du niveau de journalisation, par exemple) ne doivent pas être générées (le niveau de journalisation doit être vérifié au préalable).
  • Utilisez des bibliothèques comme celle-ci si nécessaire.
  • StringBuilder est préférable si la variable est utilisée d'une manière non partagée (à travers les threads).