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

Collection et Stream Java Discussion :

[Collection] optimisation de toArray


Sujet :

Collection et Stream Java

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 760
    Par défaut [Collection] optimisation de toArray
    Bonjour,
    Dans le cas d'une
    sachant que je veux diposer d'un tableau contenant ous les elements de celles-ci. Qu'est ce qui est le plus efficace?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    (MyType[])c.toArray(); // pas joli mais cela marche
    c.toArray(new MyType[0]); // ce que propose sun mais 2 tableaux vont devoir etre alloué
    c.toArray(new MyType[c.size()]; // ce que je pense faire... mais gagne t on vraiment en temps CPU?

  2. #2
    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 Re: optimisation et collection
    Salut,

    Citation Envoyé par TabrisLeFol
    (MyType[])c.toArray(); // pas joli mais cela marche
    Bizarre car ceci devrait renvoyer un ClassCastException puisque le vrai type du tableau est Object...
    Dans tout les cas je ne te le conseille pas...

    Citation Envoyé par TabrisLeFol
    c.toArray(new MyType[0]); // ce que propose sun mais 2 tableaux vont devoir etre alloué
    c.toArray(new MyType[c.size()]; // ce que je pense faire... mais gagne t on vraiment en temps CPU?
    Je ne pense pas que l'allocation d'un tableau de 0 élément soit coûteuse...
    Pour moi les deux solutions sont équivalentes... avec une légère préférence pour la première en environnement multithread avec une Collection synchronisé (car la taille peut varier entre le moment où tu crées ton tableau et le moment où tu entre dans la méthode toArray()).

    Pourquoi tu as des problèmes de perfs là dessus ???

    a++

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 760
    Par défaut
    Pour le premier, tu as raison, mais j'avais juste compilé.

    Pas specialement sur cette fonction mais je suis près à tout faire pour optimiser mon application... Et creer un tableau pour qu'ensuite la fonction me renvoie un autre tableau me parait bizare, bien que je suis conscient qu'un tableau de taille 0 doit etre très leger.

    Par contre, je retiens l'argument dans le cas d'un environnement multithread,c'est logique mais je n'y avais pas pensé.

  4. #4
    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
    C'est vrai qu'une méthode T[] toArray(Class<T>) aurait été plus "propre"...

    Je ne sais pas pourquoi ils ont fait ce choix de passer un tableau en paramètre...

    a++

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 760
    Par défaut
    Je commence depuis peu a m'interesser à la façon dont est implementée diverse fonction dans l'APi, il faut que je rajoute celle ci à ma liste.

    Merci pour tes reponses

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. toArray sur une collection
    Par JulienFio dans le forum Collection et Stream
    Réponses: 8
    Dernier message: 09/02/2010, 17h44
  2. PL SQL Collection optimisation
    Par nathieb dans le forum PL/SQL
    Réponses: 8
    Dernier message: 04/11/2008, 14h13
  3. Réponses: 6
    Dernier message: 26/02/2008, 11h08
  4. [FIB] Optimisation Garbage Collection ?
    Par SergioMaster dans le forum Débuter
    Réponses: 2
    Dernier message: 24/08/2007, 07h48
  5. [Collection] Optimisation d'un traitement multithreads
    Par in dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 30/11/2006, 10h28

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