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

avec Java Discussion :

Différence d'efficacité entre List et tableaux


Sujet :

avec Java

  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Japon

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Février 2012
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Différence d'efficacité entre List et tableaux
    Salut

    je voudrais savoir si il est preferable d'utiliser un tableau de String plutot qu'une "List" pour des traitements basiques par exemple parcourir le tableau.

    Je me pose cette question car je travaille avec de gros jeux de donnees et j'ai peur que l'utilisation de List ralentissent le programme.

    Je n'ai pas trouve sur internet de reponses a cette question donc en plus de ca je me demande comment trouver des informations pour comparer des performances ?
    En gros ma question est : Comment celui qui va me donner une reponse connait la reponse ...?

    Merci d'avance!

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par OshiSensei Voir le message
    Je me pose cette question car je travaille avec de gros jeux de donnees et j'ai peur que l'utilisation de List ralentissent le programme.
    Pas assez pour que ça se remarque. Par contre, travailler avec des List est en général plus simple qu'avec des tableaux.
    En général. Ce n'est pas vrai pour tout.

    Citation Envoyé par OshiSensei Voir le message
    Je n'ai pas trouve sur internet de reponses a cette question donc en plus de ca je me demande comment trouver des informations pour comparer des performances ?
    Idéalement, utiliser un profiler, comme yourkit et compagnie.
    Plus simplement, timestamp au début, timestamp à la fin, différence des deux donne la durée en millisecondes, comparer ces durées.
    En réalité, ça ne mesurera que les performances de ton cas d'utilisation précise, mais c'est déjà pas mal.

    Citation Envoyé par OshiSensei Voir le message
    En gros ma question est : Comment celui qui va me donner une reponse connait la reponse ...?
    - Les listes ne peuvent pas être exactement aussi efficaces qu'un tableau : c'est logique.
    La plupart des List utilisent un tableau en interne pour stocker leurs éléments. Donc forcément il y a le coût d'accéder au tableau, plus le coup de faire des appels à la List pour le faire.
    Certaines List, comme LinkedList, n'utilisent pas de tableau, mais c'est pas magique : pour accéder aux différents éléments elles font appel à un déréférencement de pointeur, ce qui n'est pas moins cher qu'un accès tableau. Par contre, elles font aussi plusieurs choses à côté.

    - La différence n'est pas notable :
    -- l'expérience :
    Ça arrive, hélas, assez souvent, qu'on se retrouve à passer de l'un à l'autre. De fait, ça ne change rien aux performances, du moins pas si on le fait bien.

    Contre-exemple : quand on travaille sur du traitement d'image ou quelque chose d'aussi intense en calcul brut de données atomiques toutes petites, il faut utiliser des tableaux. Les List ou autre chose, c'est trop lent. Bon, on va me dire que c'est évident à cause de l'inbox-outbox, mais pas que.

    -- la logique :
    Ton programme fait forcément quelque chose, il ne se contente pas juste de parcourir des trucs (parce qu'à ce moment-là, il y a encore plus rapide : ne pas parcourir et ne rien faire.)
    Ce quelque chose a un coût en temps. Ce coût est énormément plus cher que le coût du parcours des éléments, que ce soit tableau ou liste. A fortiori donc, la différence entre tableau et liste, déjà pas énorme par nature, a encore moins d'intérêt.

    Contre-exemple : quand on fait du traitement d'image ou similaire, le traitement et les temps d'accès ont à peu près le même coût. Même, dans les cas simple, le traitement est bien plus rapide. Le raisonnement ne s'applique donc pas, et les List sont trop lourdes.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Déjà il faudrait savoir que quoi tu parles lorsque tu dis "List".
    En effet List est une interface, et donc sans implémentation propre.
    Il faudrait plutôt comparer avec une implémentation spécifique.

    Si tu compares avec ArrayList qui est basé sur un tableau tu auras vraiment très peu de différence.

    Si tu compares avec une LinkedList c'est tout autre, mais tu n'a pas vraiment les mêmes fonctionnalités...



    Après ca dépend également de ton besoin, mais si tu dois manipuler ta liste alors ArrayList reste bien plus souple qu'un tableau. A moins de n'utiliser des listes de taille fixe il serait bête de s'en passer...


    a++

  4. #4
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Points : 13 670
    Points
    13 670
    Par défaut
    J'ajouterais que les utilisations de telle ou telle List sont accessibles au sein de la FAQ. Il y est également détaillé tout ce qui concerne les tableaux et les collections en général.
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

Discussions similaires

  1. Différence d'efficacité entre spool et utl_file
    Par bstevy dans le forum PL/SQL
    Réponses: 1
    Dernier message: 20/03/2015, 10h17
  2. [AC-2013] Différences de comportement entre liste déroulante et requête
    Par vduvernet dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 11/11/2014, 11h46
  3. Différences entre liste et tableau?
    Par fayred dans le forum Langage
    Réponses: 4
    Dernier message: 17/07/2008, 13h24
  4. [Performance] Différence entre List<T> et Collection<T>
    Par simone.51 dans le forum Framework .NET
    Réponses: 3
    Dernier message: 14/04/2008, 12h19
  5. Réponses: 5
    Dernier message: 10/04/2007, 09h37

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