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

JavaScript Discussion :

page lente par remplissage d'un tableau ?


Sujet :

JavaScript

  1. #1
    Rédacteur

    Homme Profil pro
    SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Inscrit en
    Avril 2009
    Messages
    2 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 2 497
    Points : 6 064
    Points
    6 064
    Par défaut page lente par remplissage d'un tableau ?
    Bonjour,
    je viens dans ce forum en tant que newbie total (donc ne tapez pas trop fort) et j'ai réellement besoin d'éclaircisement

    dans un portail d'enterprise, une page est générée de sorte à avoir une liste déroulante à gauche permettant de sélectionner un ou plusieurs éléments. Une fois la sélection faite, la liste déroulante de gauche se met à jour avec des sous-éléments.

    La génération de cette page ie. pour obtenir l'affichage de la première liste met 5 minutes.
    A mon avis, cela provient du chargement des valeurs dans la première liste. En cherchant sur le net, le code utilisé est un ARRAY.

    Q1 : en ouvrant cette page, la CPU de mon PC est sollicitée à 100% pendant les 5 minutes. Est-ce normal que cela soit mon PC qui travaille dans ce cas ? Cela vient-il de l'utilisation du javascript ?

    J'ai affiché le code source de la page. La seule chose remarquable dedans est la création en dynamique de la liste 1. Cette partie ressemble à cela:

    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
    <script>
    tab = new Array ();
    tab.push('A1_AA');
    tab['A1_AA']=new Array();
    tab.push('A3_AA_AP');
    tab['A3_AA_AP']=new Array();
    tab.push('A6_AACAP');
    tab['A6_AACAP']=new Array();
    tab.push('A7_AACAP');
    tab['A7_AACAP']=new Array();
    ...
    tab.push('jobs');
    tab['jobs']=new Array();
    tab['A1_AA'].push('M001#M0010100');
    tab['A1_AA'].push('M002#M0020001');
    tab['A1_AA'].push('M003#M0030100');
    ...
    tab['jobs'].push('#');
    </script>
    Je pense que c'est la cause des lenteurs car cette partie en réalité 50000 lignes au minimum.
    Dois-je comprendre que je crée un tableau nommé tab ? mais que fait tab['A1_AA']=new Array(); ?
    tab.push le rempli avec les valeurs M001#M0010100 etc ?

    Ca s'optimise un truc comme cela ?

    Merci de votre aide.

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    ça irait sans doute plus vite si tu avais une chaine à splitter ...

  3. #3
    Rédacteur

    Homme Profil pro
    SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Inscrit en
    Avril 2009
    Messages
    2 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 2 497
    Points : 6 064
    Points
    6 064
    Par défaut
    a pas compris.... plus vite pour comprendre ?

    Ai-je une bonne intuition pour la Q1 ?

    En fait la valeur A1_AA par exemple se voir dans la première liste et M001#M0010100, M002#M0020001, sont les sous éléments de cette valeur, que l'on affiche dans la liste 2 après avoir sélectionné la valeur A1_AA dans la première liste.

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    je pensais plutot à quelque chose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     chaine= "A1_AA|M001#M0010100,M002#M0020001@@A2_AA|M001#M0010100,M002#M0020001@@"
     tab=chaine.split('@@')
     for(elt in tab){
      tab[elt]=tab[elt].split('|')
      }
     var fin=new Array() 
     for (i=0;i<tab.length-1;i++){
     fin[tab[i][0]]=tab[i][1].split(',')
      }
     
    alert(fin["A2_AA"][1])

  5. #5
    Rédacteur

    Homme Profil pro
    SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Inscrit en
    Avril 2009
    Messages
    2 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 2 497
    Points : 6 064
    Points
    6 064
    Par défaut
    D'accord... donc en faisant une double boucle j'accélèrerai l'affichage.

    je pense avoir trouver un bon parallèle (compréhensible) avec ceci.

    Je suis dans le même cas où deux table vont me permettre de charger les deux listes.
    Est-ce qu'en parlant sur une réécriture en Ajax je vais encore accélérer ce chargement ?

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    a mon avis c'est surtout en splittant que tu gagnerais du temps ...
    sinon en le générant avec php

  7. #7
    Rédacteur

    Homme Profil pro
    SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Inscrit en
    Avril 2009
    Messages
    2 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 2 497
    Points : 6 064
    Points
    6 064
    Par défaut
    Pour quelle bonne raison tu me proposes de créer une chaîne à splitter plutôt qu'Ajax ou que la chaîne que j'ai dans mon code ?
    dans mon cas, je créé chaque ARRAY puis je le remplis avec un PUSH. Cette commande n'est pas optimale ?

    L'idée du PHP est intéressante mais ca ressemblerait à quoi ?

  8. #8
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    en ajax ...
    ajax te retourne un string ...
    le split va forcéménet plus vite que le push puisqu'il créé tout les elements en une seule fois alors que le push ne rajoute qu'un element à la fois

    sinon pour php tu peux en conservant ajax demander à php de serialiser ton array php ou rediger un objet json que tu evalueras sur le retour ajax

    sinson pour rediger directement l'arrya js en php
    tu sais ecrire un array en js ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var tabjb=new array(['<?php echo $elt; ?>',new Array('<?php echo $elt1.','.$elt2.','.$elt3;?>')])

  9. #9
    Rédacteur

    Homme Profil pro
    SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Inscrit en
    Avril 2009
    Messages
    2 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 2 497
    Points : 6 064
    Points
    6 064
    Par défaut
    L'explication est claire merci beaucoup.
    Non je ne connais pas ces langages mais je n'aurai pas à corriger moi-même normalement (enfin je crois )

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 21/03/2012, 11h01
  2. Réponses: 0
    Dernier message: 19/03/2012, 15h05
  3. Réponses: 13
    Dernier message: 14/10/2003, 14h31
  4. Réponses: 11
    Dernier message: 04/08/2003, 15h30
  5. Tri par fusion d'un tableau
    Par Mailgifson dans le forum C
    Réponses: 5
    Dernier message: 12/12/2002, 14h53

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