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 :

Optimisation d'une initialisation tableau


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 65
    Par défaut Optimisation d'une initialisation tableau
    Bonjour,

    j'aimerais trouvé un moyen d'optimiser ce bout de code qui prend trop de temps malheureusement, j'aurais besoin de vos lumières

    Je souhaiterais initialiser des tableaux n dimensions tres rapidement,
    la valeur a insérer dans les tableaux est 0

    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
    35
    36
    37
     
     
    /**
       * Nom : initArray(double[][] p_Tab, int p_Col, int p_Line)<br>
       * Description : Initialisation d'un tableau deux dimensions<br>
       * 
       * @param p_Tab
       *          tableau
       * @param p_Col
       *          colonnes
       * @param p_Line
       *          lignes
       * @return tableau initialise
       */
      public static double[][] initArray(double[][] p_Tab, int p_Col, int p_Line) {
        // ---------------------------------------------------------------
        // Declaration des variables necessaires
        // ---------------------------------------------------------------
        int c = 0;
     
        // ---------------------------------------------------------------
        // On instancie le tableau
        // ---------------------------------------------------------------
        if (p_Tab == null) {
          p_Tab = new double[p_Col][p_Line];
        }
        else {
          // ---------------------------------------------------------------
          // On init le tableau
          // ---------------------------------------------------------------
          for (c = 0; c < p_Col; c++) {
            System.arraycopy(s_DblList, 0, p_Tab[c], 0, p_Line);
          }
        }
     
        return p_Tab;
      }

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    885
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 885
    Par défaut
    Salut,

    pour savoir où chercher : qu'est-ce qui prend le plus de temps ? La création d'un tableau n*m, ou le remplissage d'un tableau n*m ?
    Si c'est le remplissage alors t'embêtes pas, recréés en un.

    Ensuite, as-tu vraiment besoin d'un tableau n*m ? Une map (avec une clef composée d'autant de valeurs que tu veux de dimensions) n'irait pas ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 65
    Par défaut
    Alors j'ai besoin de ce genre de tableau et de les initialiser souvent parce que je suis dans du calcul numérique bouclé.

    Le nombre de boucle est lié au temps de la simulation. 1 boucle pour une seconde.

    Donc concrètement cette méthode est appelé très souvent, et dans mon calcul numérique elle prend 80% du temps consommé. J'aimerais pouvoir l'optimiser pour qu'elle puisse prendre le moins de temps possible.

    Le problème de créer sans arrêt des tableaux risque sans doute d'exploser la mémoire.

    Ai-je été assez clair? ou dois-je reformuler ma demande?

  4. #4
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    570
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 570
    Par défaut
    Mais je comprend pas trop en fait, tu veux initialiser des tableaux avec toutes les valeurs à 0 ?
    Parce que c'est comme ca par défaut en fait Oo

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 65
    Par défaut
    Oui je sais, mais comme je l'ai dit précédemment c'est un calcul numérique bouclé, donc pour une boucle on calcul des choses, les tableaux se remplissent et pour la seconde boucle on a besoin de les réinitialiser a la valeur 0 pour de nouveau faire des calculs et éviter un chevauchement avec les calculs précédent (pour éviter les erreurs de calcul)

    Tu vois mieux le problème??

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 65
    Par défaut
    J'ai gagner une dixième de seconde en déclarant le c dans la boucle (for (int c = 0

    j'ai économisé deux instructions.

  7. #7
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    570
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 570
    Par défaut
    Oui, et je comprend mieux ta phrase "Le problème de créer sans arrêt des tableaux risque sans doute d'exploser la mémoire.".

    Mais je ne suis par contre pas sur d'être d'accord avec ca vu que tes tableaux sont détruies à chaque fois. Certe si tu dois créer/détruire beaucoup de tableau, le garbage collector va être sollicité et ralentir l'application, mais ca ne sera rien comparer à ce que tu fais comme autre calcul.

Discussions similaires

  1. Réponses: 2
    Dernier message: 26/09/2008, 22h32
  2. Réponses: 17
    Dernier message: 03/12/2004, 11h17
  3. [Debutant] Optimisation d'une boucle
    Par Javatator dans le forum Langage
    Réponses: 3
    Dernier message: 25/10/2004, 18h50
  4. [Debutant] Initialisation tableau []
    Par Pumpkins dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 15/09/2004, 00h02
  5. Initialisation tableau
    Par poinclin dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 24/06/2004, 15h39

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