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 Perl Discussion :

[langage] taille maximale d'un tableau ?


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut [langage] taille maximale d'un tableau ?
    Bonjour,


    J'aimerais connaitre la taille maximum que peut prendre un tableau indexé en Perl.

    J'ai trouvé sur le net

    In practice, open addressing is rarely employed- the open addressed hash table has a maximum size, whereas linked list hash tables have no limit to their capacity except available memory
    J'aimerais savoir ce qu'est un "tableau indexé de listes liées"
    Est ce quand on a une hash qui a des pointeurs vers des listes? Tout comme plus bas mon tableau a des pointeurs vers des autres tableaux.
    N'hésitez pas à me reprendre si mon vocabulaire est incorrect.


    Ma table est sous la forme

    $Info{$Acc[$i]}{"Taxon"}

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    my $Info=  [
                    {
                    'AY223482'=>    {'Taxon'=> ["3267"],
                                    'Souche'=> ["Dd"]},
     
                    'AY223483'=>    {'Taxon'=> ["1296"],
                                    'Souche'=> ["Jj"]}
                    };
     
            ];
    %Info peut il contenir 500 Ko? En utilisant des références cela change t'il quelque chose?

    Merci,

    Jasmine,

  2. #2
    Rédactrice

    Avatar de stoyak
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    408
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 408
    Par défaut
    si tu travailles avec des hash, 500 Ko passent amplement! je mets des fichiers de 30Mo en mémoire dans des hash!

  3. #3
    Membre éprouvé
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut
    Oui justement, mon programme a planté une fois arrivé à 304 Ko et j'en recherche la cause. Aurais-tu une solution à me proposer?

    1) J'ai une fonction (dans un fichier .pm) qui interroge Genbank et qui construit et renvoie la hash
    2) un script Perl qui
    * appelle cette fonction
    - entrée: la requête pour Genbank (Bacillus Anthracis [organism])
    - sortie: la hash contenant toutes mes informations (%Tableau) qui a la forme $Tableau{$Acc[$i]}{"Taxon"}

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    my %Tableau;
    my $Ref= \%Tableau;
    %Tableau=Tableau("Bacillus Anthracis [organism]");

    * se connecte a MySQL
    * crée une table
    * remplit la table en lisant la Hash ligne par ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
          foreach my $Acc (keys %$Ref)
            {
                     my $Hash=$Ref->{$Acc};
     
                     foreach my $Champ (keys %$Hash)
                    {
                    }              
            }
    Ou alors je ne fais qu'un grand script qui interroge GenBank et j'insers directement les valeurs dans ma base de données en passant par plusieurs hash plus petites

  4. #4
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    un hasu ne plante pas pour 1 Mo de données, c'est ridicule comme taille. Donc ton soucis venait surement d'ailleur (Tu pourrais nous montrer le message d'erreur pour information).
    Sinon soit tu met tout dans un hash et ensuite l'insert dans ta base. Etant données que ce sont des petits hash, ça ne consommera pas beucoup de memoire.
    Mais tu peux faire un grand script comme tu l'as suggéré, tout dépends de toi, de ta facilité à coder avec l'un ou l'autre maniere.

    Si tu devais faire des hash de 100Mo, je t'aurais dis, fais du ligne à ligne si possible, mais dans ton cas, pas necessaire.

    voilà

  5. #5
    Membre Expert Avatar de MarneusCalgarXP
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    911
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 911
    Par défaut
    Au boulot, j'avais fait des tests avec 8ko, 80ko, 800ko, 8Mo, 80Mo et 800Mo, et seul le test de remplissage à 800Mo a échoué... Je dirais donc que la limite se situe entre 80 et 800Mo, sans pouvoir t'apporter de précision supplémentaire...

  6. #6
    Membre éprouvé
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut
    Je n'ai eu aucun message d'erreur de la part de Perl. Mais de mes 1300 entrées seules 758 sont insérées dans la base de données.
    Je vais refaire tourner mon programme et écrire les accession dans un fichier texte afin de voir si la hash possèdent bien mes 1300 séquences et afin d'identifier l'accession de la séquence à laquelle l'insertion dans la base de données s'arrête.
    Je sais que ce n'est pas un problème de simple quote qui pourrait faire rater la requête SQL car j'ai utilisé la fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $Valeur=quotemeta($Valeur);
    Je verrai demain quand j'en saurai plus.

    Merci,

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

Discussions similaires

  1. LV 2011 : taille maximale d'un tableau 1D
    Par sooyung dans le forum LabVIEW
    Réponses: 1
    Dernier message: 09/06/2015, 22h50
  2. Taille maximale d'un tableau de char
    Par ickis69 dans le forum Débuter
    Réponses: 33
    Dernier message: 06/04/2012, 11h38
  3. [XHTML 1.0] Taille maximale d'un tableau
    Par ne2sbeal dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 05/03/2010, 12h23
  4. [Tableaux] Taille maximale d'un tableau
    Par estacado dans le forum Langage
    Réponses: 7
    Dernier message: 25/07/2007, 22h20
  5. [Tableaux] Taille maximale d'un tableau
    Par Bisûnûrs dans le forum Langage
    Réponses: 3
    Dernier message: 15/02/2007, 19h53

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