Cet article montre la différence de temps nécessaire pour des opérations similaires sur un objet
String
et un objet` StringBuffer`.
-
String
étant une classe immuable, il instancie un nouvel objet chaque
temps une opération est effectuée sur elle
.
StringBuffer
étant une classe mutable, la surcharge d’objet
L’instanciation pendant les opérations est supprimée. Par conséquent, le temps nécessaire aux opérations est inférieur à celui de
String
1. Chaîne vs StringBuffer
Comparons maintenant le temps d’exécution pris par les classes
String
et` StringBuffer` pour ajouter 10 000 caractères.
TimeTester.java
package com.techfou; public class TimeTester{ public static void main(String[]args) { String aString = ""; long before = System.currentTimeMillis(); for (int i = 0; i < 10000; i++) { aString = aString + "x"; } long after = (System.currentTimeMillis()); System.out.println("Execution Time for String: " + (after - before)); before = System.currentTimeMillis(); StringBuffer aStringBuffer = new StringBuffer(); for (int i = 0; i < 10000; i++) { aStringBuffer.append("x"); } after = (System.currentTimeMillis()); System.out.println("Execution Time for StringBuffer: " + (after - before)); } }
En exécutant le code ci-dessus, vous obtenez la sortie ci-dessous. La sortie peut varier en fonction de la vitesse de votre processeur. Comme on peut le voir clairement, il faut 128 millisecondes pour ajouter 10 000 chaînes à un objet chaîne.
En comparaison, StringBuffer ne prend que 11 millisecondes pour que cela se produise.
Execution Time for String: 128 Execution Time for StringBuffer: 11
Cela prouve que quand il s’agit de temps,
StringBuffer
est plus rapide que` String`. Cependant, la propriété immuable de
String
le rend thread-safe.
2. Conclusion
Pour conclure, on peut dire que
StringBuffer
est un meilleur choix que` String` si vous connaissez bien sa syntaxe et les fonctions fournies par la classe. C’est plus rapide et modifiable.
String
est limité à une utilisation dans des situations nécessitant des objets en lecture seule ou nécessitant une manipulation de chaînes.
Références
-
% E2% 80% 9Dhttp://www.javaworld.com/article/2076072/build-ci-sdlc/stringbuffer-versus-string.html%E2%80%9D[Why
StringBuffer est plus rapide que String]. http://docs.oracle.com/javase/7/docs/api/java/lang/String.html [String
Javadocs]. https://docs.oracle.com/javase/7/docs/api/java/lang/StringBuffer.html Athling
Javadocs]. https://docs.oracle.com/javase/tutorial/essential/concurrency/immutable.html [Definition
comme java docs]
lien://tag/string/[string]lien://tag/stringbuffer/[stringbuffer]