Articles

[Java] Performances en Java - La construction de String

La construction de chaînes de caractères en Java peut être optimisée en utilisant les nouvelles classes incluses dans le JDK 1.5. Ce petit test compare trois méthodes différentes pour construire une chaîne de caractère de 50 000 entiers : - La méthode classique par concaténation de String (opérateur +=) - La classe StringBuilder, qui est spécialisée dans la construction de chaînes - La classe StringBuffer, qui est identique au StringBuilder avec en plus la notion de synchronisation

Voici le code utilisé :

static Runnable classic = new Runnable() {
    @Override
    public void run() {
      String s = "";
      for (int i = 0; i < 50000; i++) {
        int v = (int)(Math.random() * 9f);
        s += v;
      }
    }	
  };
 
  static Runnable stringBuilder = new Runnable() {
    @Override
    public void run() {
      StringBuilder sb = new StringBuilder();
      for (int i = 0; i < 50000; i++) {
        int v = (int)(Math.random() * 9f);
        sb.append(v);
      }
    }
  };
 
  static Runnable stringBuffer = new Runnable() {
    @Override
    public void run() {
      StringBuffer sb = new StringBuffer();
      for (int i = 0; i < 50000; i++) {
        int v = (int)(Math.random() * 9f);
        sb.append(v);
      }
    }
  };
 
  static void test(Runnable runnable, String msg) {
    long time = System.currentTimeMillis();
    runnable.run();
    time = System.currentTimeMillis() - time;
    System.out.println(msg+" : "+time+" ms");
  }
 
  public static void main(String[] args) {
    System.out.println("TEST PERFORMANCES String");
    test(classic, "Methode classique");
    test(stringBuilder, "Methode StringBuilder");
    test(stringBuffer, "Methode StringBuffer");
  }

Les résultats sont sans équivoques :

  • Méthode classique : entre 2000 et 2200 millisecondes
  • Méthode StringBuilder : entre 0 et 16 millisecondes
  • Méthode StringBuffer : entre 0 et 16 millisecondes

La méthode classique est véritablement bien plus lente. Concernant les deux méthodes StringBuilder et StringBuffer, il est difficile de les différencier avec ce test, mais elles sont néanmoins bien plus performantes que la méthode classique.

 Ce test a été réalisé sur un pc Intel Core2 Duo 2.66GHz
 avec 2Go de RAM, Windows XP SP3 et JRE 1.6.0_07.

How Long Will It Last

Il est toujours bon se faire rappeler que la fin du monde est proche. Ce magnifique diagramme indique la consommation et les quantités restantes pour la plupart des matériaux chimiques utilisés pour fabriquer dans l’industrie moderne. On apprends ainsi que pour l’Indium (qui sert à fabriquer nos précieux écrans LCD) il reste entre 4 et 13 ans, que dans 20 ans il ne restera quasiment rien si on se base sur la moitié de la consommation des américains, et que globalement, et que sans compter les épidémies de grippe porcine et autres guerres à venir, on est pas dans la merde… la p’tite note d’optimisme du jour quoi ;-)

howlongwillitlast_thumb.jpg

C’est devenu le blog du diagramme ici…