Bonjour à tout le monde,
J'ai lu dans différents articles que la concaténation de string (chaînes de caractères) peut être améliorée en terme de temps, et ceci en évitant l'utilisation de l'opérateur usuel '+' et en le remplaçant par l'usage de StringBuilder.
Voici quelques liens utiles:
1. http://kaioa.com/node/59
2. http://www.venishjoe.net/2009/11/jav...ation-and.html
Voici un exemple:
Dans l'exemple précédent, les deux variables str et sb auront la même valeur au final, par contre la fonction StringBuilder.append prend moins de temps par rapport à la concaténation basée sur l'opérateur '+'.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 String str = new String('A'); StringBuilder sb = new StringBuilder('A'); for (int i=0; i<10000000; i++){ str = str+'A'; sb = sb.append('A'); }
J'ai un programme très longue pour être copié ici, je voulais faire certaines améliorations, j'ai remplacé toute utilisation de '+' par le StringBuilder.append, ça a marché parfaitement dans le cas où la concaténation est à l'intérieur d'une boucle (comme dans l'exemple). Par contre, quant aux fonctions récursives, le StringBuilder bouffe beaucoup plus de temps que l'opérateur '+'. Je n'arrive pas à comprendre ce fait, ça me parait illogique !!!
Je voudrais savoir si quelqu'un a déjà fait cette petite expérience (mais utile) de comparaison entre '+' et StringBuilder, et pourquoi ce dernier est meilleur seulement à l'intérieur de boucles.
Merci d'avance.
Partager