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

Contribuez Java Discussion :

[Perfs] Boucle for et iterateurs


Sujet :

Contribuez Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 690
    Par défaut [Perfs] Boucle for et iterateurs
    Tu as un lien? ca m'interesse.
    J'ai du mal a comprendre comment il peut y avoir une perte de performance significative entre le foreach et les for avec iterator, vu qu'il sont sencé fonctionner de la même manière.


    [edit par adiGuba] messages déplacées depuis la discussion suivante : http://www.developpez.net/forums/sho...d.php?t=460139

  2. #2
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Par défaut
    Citation Envoyé par Uther Voir le message
    Tu as un lien? ca m'interesse.
    J'ai du mal a comprendre comment il peut y avoir une perte de performance significative entre le foreach et les for avec iterator, vu qu'il sont sencé fonctionner de la même manière.
    Pfiou c'est pas tout jeune comme discussion, je vais voir si je retrouve ça..

    [Edit]
    J'ai retrouvé une discussion mais ce n'est pas celle dont je me souviens car les tests étaient fait par adiGuba et on avait les temps d'exec de chacune des versions. Surtout que dans celle ci, on a une vision différente..
    Faudrais refaire les tests mais j'ai la flemme la ..

    Le lien: http://www.developpez.net/forums/sho...d.php?t=167491
    [/Edit]

    Bulbo
    [Java] [NetBeans] [CVS]
    La FAQ Java
    Merci de ne pas me poser de questions techniques par MP.

  3. #3
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par bulbo Voir le message
    (adiGuba l'a fait les résultat sont édifiant)
    Heu... je ne me souviens pas de cela

    Je pense que le "foreach" propose les mêmes performances qu'un parcours avec Iterator...

    D'ailleurs je viens de vérifier avec un javap -c et les deux méthodes suivantes produisent strictement le même bytecode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    	public void printAll(List<? extends Object> list) {
    		for (Iterator<? extends Object> iter = list.iterator(); iter.hasNext(); ) {
    			Object value = iter.next();
    			System.out.println(value);
    		}
    	}
     
    	public void printAllEx(List<? extends Object> list) {
    		for (Object value : list) {
    			System.out.println(value);
    		}
    	}

    a++

  4. #4
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Par défaut
    Hé béh je me fais vieux .. mes souvenirs se mélangent .. bon ce qui reste vrai c'est que l'index est plus rapide que l'iterator (sauf si je suis définitivement sénile)

    Et la nouvelle boucle for sur un tableau ? Je suis quand même pas fou, je suis sur que j'avais vu un bench ou le nouveau for était minable.. par contre ce n'était pas sur ce forum ..

    Je fais un test et je poste ici histoire de dissiper le malentendu je ne voudrais pas enduire tout le monde d'erreur ...

    Bulbo
    [Java] [NetBeans] [CVS]
    La FAQ Java
    Merci de ne pas me poser de questions techniques par MP.

  5. #5
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par bulbo Voir le message
    Hé béh je me fais vieux .. mes souvenirs se mélangent .. bon ce qui reste vrai c'est que l'index est plus rapide que l'iterator (sauf si je suis définitivement sénile)
    Ca ca dépend de l'implémentation (c'est vrai pour une ArrayList mais pas pour une LinkedList) et l'Iterator permet toujours le meilleur compromis...

    Citation Envoyé par bulbo Voir le message
    Et la nouvelle boucle for sur un tableau ? Je suis quand même pas fou, je suis sur que j'avais vu un bench ou le nouveau for était minable.. par contre ce n'était pas sur ce forum ..
    Ca c'est fort probable par contre (et il est possible qu'on en ai parlé mais je n'en suis pas sûr non plus )

    a++

  6. #6
    Rédacteur
    Avatar de bulbo
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2004
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Février 2004
    Messages : 1 259
    Par défaut
    En fait j'ai fait le test (mais mon PC ramait a cause d'un backup à la con qui se déclenche entre 18h et 19h) et il semblerait (à confirmer demain) que le nouveau for soit plus rapide sur un tableau qu'une boucle avec index .. sur une grosse boucle je suis à 33 ms en moyenne contre 22 en moyenne avec le nouveau for

    Seul bémol du nouveau for c'est que c'est un accès en lecture seule..

    Bulbo
    [Java] [NetBeans] [CVS]
    La FAQ Java
    Merci de ne pas me poser de questions techniques par MP.

Discussions similaires

  1. Boucle for dans un script cmd
    Par nicolas.ganache dans le forum Développement
    Réponses: 4
    Dernier message: 19/07/2004, 16h07
  2. Réponses: 3
    Dernier message: 06/07/2004, 10h21
  3. [Debutant] Batch et Boucle for
    Par ludovic.fernandez dans le forum Scripts/Batch
    Réponses: 8
    Dernier message: 06/05/2004, 19h21
  4. [Swing][boucles] for, do, if .....comment faire simple?
    Par chastel dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 02/05/2004, 22h49
  5. [langage] boucle "for" modification du pas
    Par K-ZimiR dans le forum Langage
    Réponses: 4
    Dernier message: 29/04/2004, 11h54

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