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

Langage Java Discussion :

Optimisation Arbre n aire


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    28
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 28
    Par défaut Optimisation Arbre n aire
    salut

    deuxième édition du message (boulet inside)

    je cherche à optimiser un arbre n-aire de la forme
    noeud contient
    -char racine
    -arraylist noeud

    l'utilisation d'un arbre est imposé, par contre on l'utilise pour parcourir un dictionnaire environ 150000 mots X 2 ~ 5
    car pour un mot exemple ananas
    on doit rentrer dans l'arbre des a
    ananas
    anas#an
    as#anan

    idem pour les autres lettres dans les arbres respectifs
    donc avec la structure précedante je fais petter la memoire de la jvm
    et donc je cherche une solution pour pouvoir optimiser ca

    j'ai quelques petites idees
    changer l'arraylist par un tableau
    voir si je peux virrer la racine pour utiliser une réference
    est ce que les réferences en java sont plus légère qu'un char
    est ce qu'il y a moyen de gagner de la place si je m'arrange pour passer les méthodes de ma classe noeud en static final

    voilà merci d'avance pour ceux qui auront des idées pouvant m'aider

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2008
    Messages : 31
    Par défaut
    salut,

    je n ai pas vraiment de solution a ton pb .. c est juste pour te dire que AFAIK utuliser un tableau a la place des arraylist ne va pas te faire gagner bcp de memoire car arraylist utilise un array en interne

    les chars sont pas vraiment plus legeres que des refs

    et le fait de mette des methodes en statis final ne changera pas grand chose car de toute facon les methodes sont stockees une fois pas classe et non par instance dans la jvm

    peut etre tu pourrais cacher des donnees .. ou passer des parametres a ta jvm en augmentant son heap space .. a investiguer

    ++

  3. #3
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Par défaut
    Bonjour

    As tu pensés a augmenter la taille de la jvm (-Xmx et -Xms), avant de chercher à faire des optimisations ?
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  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
    Salut,

    Citation Envoyé par kazmi Voir le message
    changer l'arraylist par un tableau
    Tu ne gagnera pas grand chose (1 int + 1 référence) mais ce sera bien plus complexe à gérer si tes tableaux sont redimensionné.

    Par contre tu pourrais utiliser la méthode trimToSize() pour limiter la taille de ton arraylist à la taille des éléments qu'il contient et ne pas gaspiller d'espace (uniquement si tu n'ajoute plus d'éléments).

    Citation Envoyé par kazmi Voir le message
    voir si je peux virrer la racine pour utiliser une réference
    Ben
    Comme tu ne détaille pas vraiment ta structure de donnée ce n'est pas évident de te répondre.

    Que contient "racine" ? Que contiendrait ta référence ? Que contient exactement chacun de tes noeuds ?

    Citation Envoyé par kazmi Voir le message
    est ce que les réferences en java sont plus légère qu'un char
    Aucune idée. Tu as tant de noeud que cela ?

    Citation Envoyé par kazmi Voir le message
    est ce qu'il y a moyen de gagner de la place si je m'arrange pour passer les méthodes de ma classe noeud en static final
    Non (j'ai du mal à comprendre l'intérêt de cela )

    a++

  5. #5
    Membre averti
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    28
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 28
    Par défaut
    resalut,

    dsl pour le manque de clarté du premier message ^^

    ma structure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public class Noeud{
     
    char c;
    ArrayList<Noeud> fils;
     
    ... + méthodes ...
     
    }
    en cherchant un peut partout j'ai trouvé quelque information :
    une référence pèse 16 bits donc ça me servirait à rien car un char en java fait aussi 16 bits. Et comme les méthodes ne pèsent rien en mémoire ma proposition du static final pour les méthodes était complètement débile :p

    ( je sais pas si tout est correct voila la source http://www.developpez.net/forums/arc.../t-345294.html )

    merci pour la méthode trimToSize() je connaissais pas
    j'ai vu aussi qu'on pouvais spécifier la taille initial du tableau d'une arraylist
    donc la je peut peut être gagner un peut de temps à la construction de mon arbre en spécifiant la taille max ou moyenne car je sais qu'au maximum un nœud pourra avoir 26 fils ca permettra peut etre de pas avoir a ce que mes arraylist réaloue un tableau plus grand quand j'ajoute un fils

    sinon ui le passage de paramètre à la jvm fonctionne j'arrive à faire passer l'arbre dans 512 de ram
    sinon pour le nombre de nœud c'est proportionnel à la longueur des mots

    merci ++

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

Discussions similaires

  1. [Graphique] affichage d'arbres n-aires
    Par jeepnc dans le forum Graphisme
    Réponses: 2
    Dernier message: 21/03/2006, 22h27
  2. Parcours en profondeur d'un arbre n-aire
    Par Premium dans le forum Langage
    Réponses: 11
    Dernier message: 20/02/2006, 09h01
  3. [debutant] parcours en profondeur arbre n-aire
    Par tx dans le forum Langage
    Réponses: 1
    Dernier message: 15/02/2006, 04h56
  4. construire un arbre n-aire
    Par emidelphi77 dans le forum Langage
    Réponses: 2
    Dernier message: 11/10/2005, 19h47
  5. arbre n-aire delete
    Par Fry dans le forum C++
    Réponses: 13
    Dernier message: 19/10/2004, 22h22

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