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

Java Discussion :

Structure optimisée en critère de mémoire


Sujet :

Java

  1. #1
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 112
    Par défaut Structure optimisée en critère de mémoire
    Salut tout le monde,

    Je travaille actuellement sur un projet de fouille de données et je suis débutante en java.Je traite des fichiers d'entiers (suite de 0 et 1).Dans une première phase je dois parcourir tout le fichier et extraire les 1 tout en gardant leur position (num ligne,num colonne) dans une structure.Le problème est que je ne sais pas quelle structure choisir pour effectuer ce traitement parceque les fichiers sur lesquels je travaille sont assez énorme et je veux optimiser la gestion de mémoire.J'ai opté pour le choix du ArrayList au début mais je ne suis pas sur que ça soit la structure la plus optimisée.

  2. #2
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Pour éviter d'utiliser un entier pour chaque position, tu pourrais utiliser des bitset qui te permettent d'économiser beaucoup de mémoire.

    Tu pourrais par exemple utiliser une List<BitSet> ou tu aurais un bitset par lignes. Si tu connais à l'avance le nombre de lignes, opte pour un tableau de BitSet.

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 112
    Par défaut
    Merci pour la réponse mais svp j'aimerais avoir plus de clarification.Vous avez bien dit "Un BitSet par ligne"??ça veux dire que si mon fichier contient n lignes et m colonnes j'aurais n BitSet de taille m chacune???Et pour la manipulation,comment je ferais par exemple pour stocker ou accéder à la (i,j)ème case de mon fichier?Serait il mieux de déclarer une ArrayList de BitSet?dsl de poser trop de questions en même temps mais je n'ai jamais utilisé ce type auparavant.

  4. #4
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Je parlais effectivement d'un BitSet par ligne.

    En fait, le BitSet utilise directement les bits de valeurs long, c'est à dire que dans un seul long on peut stocker directement 64 booléens. Il faut voir le BitSet comme une collection de booléens. Dans ton cas, chaque booléean représenterait une colonne de ton fichier, donc un 1 (true) ou un 0 (false).

    Pour setter une valeur, il suffit d'utiliser set(int) et pour voir si elle est à true, il suffit d'utiliser get(int). Si tu veux parcourir, un BitSet, tu peux utiliser la méthode nextSetBit(int fromIndex).

    Par contre, il faudrait voir encore les probabilités d'un 1 dans ton fichier, si c'est moins d'un fois sur 64, ce n'est pas la bonne structure de données étant donné que tu auras alors des valeurs long inutiles dans le bitset.

Discussions similaires

  1. Réponses: 3
    Dernier message: 24/12/2014, 13h47
  2. Réponses: 1
    Dernier message: 09/05/2012, 10h39
  3. Optimisation d'Eclipse : CPU, Mémoire
    Par snipes dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 06/04/2012, 14h09
  4. Réponses: 7
    Dernier message: 02/09/2009, 22h39
  5. Réponses: 6
    Dernier message: 07/07/2007, 18h12

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