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

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

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    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,
    -- 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
    Points : 1 491
    Points
    1 491
    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!
    Cela demande du courage d'en tirer du plaisir
    Quand on n'a qu'un marteau, tous les problèmes ressemblent à un clou

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

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    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
    -- Jasmine --

  4. #4
    Responsable Perl et Outils

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    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 éprouvé Avatar de MarneusCalgarXP
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    911
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 911
    Points : 1 118
    Points
    1 118
    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...

    Je ne répond à aucune question technique par MP.

    Si votre problème est réglé, n'oubliez pas Dans tous les cas

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

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    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,
    -- Jasmine --

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 911
    Points : 1 118
    Points
    1 118
    Par défaut
    Ton problème est surement un problème de doublons dans la base MySQL. L'insertion MySQL échoue, mais l'instruction execute n'affiche pas d'erreur, elle renvoie juste undef...

    A moins que ce ne soit tout simplement que tu insères plusieurs fois la même clé dans ta hash et que du coup tu n'as que 758 entrées distinctes et non 1300 !

    Je ne répond à aucune question technique par MP.

    Si votre problème est réglé, n'oubliez pas Dans tous les cas

  8. #8
    Responsable Perl et Outils

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    tu peux faire un or die ou plutot or print "probleme insertion DB"; dans tes scripts perl. ça te permettrait de voir les requetes qui ont échouées.

  9. #9
    Membre actif Avatar de scaleo
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 327
    Points : 219
    Points
    219
    Par défaut
    J'ai déjà mis plus d'une giga de données dans un hash sa passe sans soucie , si ta plus d'un giga de ram , parce qu'il vaut mieux que sa ne swap pas .
    Vista powaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ::

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

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Bonjour à tous,

    Cette nuit mon programme a tourné sans problème. Je ne sais pas la raison pour laquelle il a planté la fois précédente étant donné que je n'ai modifié aucune ligne de code. peut être un problème de connexion avec Genbank.

    Jasmine,
    -- Jasmine --

  11. #11
    Responsable Perl et Outils

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    c'est possible que ce soit du à une connection internet stoppée.
    Bon courage pour la suite

+ 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, 21h50
  2. Taille maximale d'un tableau de char
    Par ickis69 dans le forum Débuter
    Réponses: 33
    Dernier message: 06/04/2012, 10h38
  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, 11h23
  4. [Tableaux] Taille maximale d'un tableau
    Par estacado dans le forum Langage
    Réponses: 7
    Dernier message: 25/07/2007, 21h20
  5. [Tableaux] Taille maximale d'un tableau
    Par Bisûnûrs dans le forum Langage
    Réponses: 3
    Dernier message: 15/02/2007, 18h53

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