IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Quel avantage du valueOf


Sujet :

Java

  1. #1
    Invité(e)
    Invité(e)
    Par défaut Quel avantage du valueOf
    Bonjour,

    pour des soucis d'optimisation, je suis en train de me demander quelle méthode utiliser pour récupérer un Integer.

    le valueOf(monInt) ou le new Integer(monInt) ?

    j'ai effectué un test unitaire et le valueOf semble "plus" long.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    import junit.framework.TestCase;
     
     
    public class TestValueOf extends TestCase {
     
     
    	public void testValueOf() {
    		final long start = System.currentTimeMillis();
     
    		for (int i = 0; i <= 300000000; i++) {
    			final int monInt = 10000;
    			final Integer t = Integer.valueOf(monInt);
    		}
     
    		final long end = System.currentTimeMillis();
     
    		System.out.println(end - start);
    	}
     
    	public void testNewInteger() {
    		final long start = System.currentTimeMillis();
     
    		for (int i = 0; i <= 300000000; i++) {
    			final int monInt = 10000;
    			final Integer t = new Integer(monInt);
    		}
     
    		final long end = System.currentTimeMillis();
     
    		System.out.println(end - start);
    	}
     
    }
    résultat :

    6560 ms pour le valueOf()
    6186 ms pour le new Integer()

    alors :

    - Quel est l'avantage du valueOf ?
    - Quel est l'avantage du cache du valueOf ?
    - Dans quel cas l'utiliser plutôt que de créer une nouvelle instance ?

    j'ai lu cet article :
    http://tech.puredanger.com/2007/02/01/valueof/

    et je constate que je ne suis pas le seul à me poser la question.

    quel est votre avis ?

    merci

  2. #2
    Membre chevronné
    Inscrit en
    Mai 2006
    Messages
    1 364
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 1 364
    Points : 1 984
    Points
    1 984
    Par défaut
    Pour repondre à ta question, le plus simple est de jeter un oeil dans les sources

    Et si tu regardes, tu verras pour new Integer(int i) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        public Integer(int value) {
    	this.value = value;
        }
    Et pour le valueof :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        public static Integer valueOf(int i) {
            if(i >= -128 && i <= IntegerCache.high)
                return IntegerCache.cache[i + 128];
            else
                return new Integer(i);
        }
    C'est à dire que new Integer(int) instancie un integer à chaque fois (donc consomme de la memoire à chaque instanciation d'une meme valeur) et Integer.valueOf(int) retourne une valeur du cache (donc ne consomme pas de memoire à chaque instanciation d'une meme valeur).
    Apres, c'est à toi de voir l'optimisation que tu veux (en temps d'execution ou en memoire).

    a+

  3. #3
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour hwoarang,

    merci pour cet exemple. Je n'avais pas pensé regarder le code source.

    sinon je viens de me rendre compte que le sujet avait déjà été abordé sur le forum :
    http://blog.developpez.com/vbrabant/...alueof/?page=2

    merci.

Discussions similaires

  1. [Langage] Quels avantages du C# sur C++ ?
    Par cjacquel dans le forum Général Dotnet
    Réponses: 11
    Dernier message: 20/10/2010, 22h58
  2. [SOLARIS] quels avantages pour un développeur java ?
    Par afrikha dans le forum Solaris
    Réponses: 5
    Dernier message: 07/06/2007, 23h22
  3. [HTML] Les div au lieu des tableau, quels avantages !
    Par heyax dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 25/02/2007, 18h35
  4. [Certifications DOTNET] Quels avantages et conséquences ?
    Par adilo dans le forum Général Dotnet
    Réponses: 61
    Dernier message: 15/08/2006, 11h50
  5. Quels avantages de l'autoextend
    Par lecharcutierdelinux dans le forum Oracle
    Réponses: 13
    Dernier message: 30/05/2006, 17h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo