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

ASP.NET Discussion :

[Databinding] Problème de performance


Sujet :

ASP.NET

  1. #1
    Membre éclairé
    Homme Profil pro
    Architecte technique
    Inscrit en
    Février 2004
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 477
    Par défaut [Databinding] Problème de performance
    Bonjour,

    J'ai sur ma pages aspx plusieurs combobox ComponentArt. Au chargement de la page j'effectue mes requêtes SQL (temps de réponse parfait), puis je fais mes databind() ...

    En pas à pas, le databind passe très vite. Cependant après je dois attendre 40s avant de voir le résultat s'afficher alors qu'il ne se passe plus rien.

    Quelqu'un a une idée du pourquoi du comment ?

  2. #2
    Membre éprouvé
    Inscrit en
    Septembre 2007
    Messages
    1 137
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 137
    Par défaut
    un peu de code pour comprendre, merci.

  3. #3
    Membre Expert
    Avatar de Nicolas Esprit
    Homme Profil pro
    Consultant en technologies
    Inscrit en
    Février 2010
    Messages
    1 467
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en technologies
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 1 467
    Par défaut
    Bonjour,

    Avant même de regarder le code tu pourrais déjà faire un petit coup de Firebug ou GoogleSpeed afin de voir quel est l'élément qui prend trop de temps à télécharger.

    Si rien ne te choque, cela peut aussi être le temps de traitement serveur et donc ton code. Dans ce cas tu peux par exemple utiliser la fonction de Tracing ASP.NET (trace.axd).

    En espérant t'avoir aidé.

  4. #4
    Membre éclairé
    Homme Profil pro
    Architecte technique
    Inscrit en
    Février 2004
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 477
    Par défaut
    Je viens d'installer FireBug ! Et je me rends compte que sur Firefox l'affichage des mes comobobx se fait de manières instantannées ... Bizarre je trouve !
    Une idée ????

    En file Size de "Page Speed" j'ai 2.11 MB et 900kB de Transfer Size !
    Et voici un exemple de code de bind.

    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
    20
    21
    22
    23
    24
    25
    26
    27
     
     
    public static void bindClientToCombobox(List<GTMClient> listClient, ComboBox ccb)
            {
                try
                {
                    if (ccb == null || listClient == null || listClient.Count == 0)
                        return;
     
                    GTMGenericComparer<GTMClient> genericComparer = new GTMGenericComparer<GTMClient>("SNomClient",
                        GTMGenericComparer<GTMClient>.SortOrder.Ascending);
                    listClient.Sort(genericComparer);
     
                     ccb.Items.Clear();
                    ccb.DataSource = listClient;                
                    ccb.DataTextField = "SNomClient";
                    ccb.DataValueField = "LIdClient";
                    ccb.DataBind();
     
                    ccb.Enabled = listClient.Count > 0 ? true : false;
                    ccb.SelectedIndex = 0;
                }
                catch (Exception ex)
                {
                    throw new Exception("GTMWebClientDisplayData.bindClientToCombobox: " + ex.Message + "\n");
                }
            }

  5. #5
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Salut
    Citation Envoyé par Pfeffer Voir le message
    En file Size de "Page Speed" j'ai 2.11 MB et 900kB de Transfer Size
    Je vois pas trop à quoi correspondent ces valeurs, mais une page qui dépasse 700k a un peu d'embonpoint. Si les 2.11Mb sont bien le poids de la page c'est énorme!

    Tu as combien d'éléments dans ta liste?

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  6. #6
    Membre éclairé
    Homme Profil pro
    Architecte technique
    Inscrit en
    Février 2004
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 477
    Par défaut
    J'ai 4 combobox liée.
    Une charge les élements de celle d'en dessous.
    La première comporte 175 éléments. Les 3 autres seulement 1 élément.

    Ce que je n'arrive pas à comprendre c'est qu'avec Firefox c'est instantanné. Sous IE8 ça mets bien 30s avant d'afficher la page complète.

    J'ai un peu de mal à comprendre... Un problème de cache peut être ?

  7. #7
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Non non c'est bien IE qui a une gestion différente de Firefox. L'un attend d'avoir tout de chargé, l'autre affiche au fur et à mesure.
    Quelle quantité de données à tu dans ta page? Sous quelle forme? Quel poids?

  8. #8
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Citation Envoyé par Pfeffer Voir le message
    Et voici un exemple de code de bind.
    Est-ce que tu peux activer la trace pour voir si oui et où la génération de ton code perd du temps?

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  9. #9
    Membre éclairé
    Homme Profil pro
    Architecte technique
    Inscrit en
    Février 2004
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 477
    Par défaut
    Voici en pièce jointe ce que me génère FireBug sur FireFox.
    Fichiers attachés Fichiers attachés

  10. #10
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    !! Tu as quand même un fichier js qui fait 1.26MB! C'est beaucoup trop! Il doit y avoir du ménage à faire ou un défaut de conception.
    "Winter is coming" (ma nouvelle page d'accueil)

  11. #11
    Membre éclairé
    Homme Profil pro
    Architecte technique
    Inscrit en
    Février 2004
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 477
    Par défaut
    Et voici le résultat du trace.
    Fichiers attachés Fichiers attachés

  12. #12
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    C'est tout? Il devrait y avoir des données sur le temps de création chargement des contrôles et de la page.
    "Winter is coming" (ma nouvelle page d'accueil)

  13. #13
    Membre éclairé
    Homme Profil pro
    Architecte technique
    Inscrit en
    Février 2004
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 477
    Par défaut
    Non si je clique sur détail le détail de chaque ligne j'ai des temps de réponses.
    Mais je ne sais pas à quelle ligne il faut que je m'interesse.

  14. #14
    Membre éclairé
    Homme Profil pro
    Architecte technique
    Inscrit en
    Février 2004
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 477
    Par défaut
    Voici une comparaison de fireBug que je viens d'effectuer.
    Dans les colonnes de gauche, on voit un test lorsqu'on se log en tant qu'administrateur. A droite on voit un test lorsqu'on se log en tant qu'utilisateur lambda.

    En admin j'ai ce fameux ralentissement puisque j'affiche toutes les informations dans mes combobox. En utilisateur lambda je n'ai pas ce ralentissement puisque j'affiche nettement moins d'informations.

    Tout semble se jouer dans le OnLoad.
    Fichiers attachés Fichiers attachés

  15. #15
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Citation Envoyé par Pfeffer Voir le message
    Tout semble se jouer dans le OnLoad.
    Ce dernier fichier est intéressant mais n'explique qu'une partie du problème. En effet, le temps de création de la page est de deux secondes environ. On est loin des 30s dont tu parles. Il y a des chances pour que le poids de la page soit le problème majeur. Solution possible, utiliser l'AJAX, faire une popup de recherche de client...

    Il y a un plugin Firefox YSlow qui peut aussi t'apporter beaucoup d'infos.

    Pour avoir plus de détails, tu peux ajouter des informations dans la trace ( dans la partie "Informations de traçage") en faisant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Trace.Write("Debut test");
    // code
    Trace.Write("Fin test");
    Ajoute ces appels à la trace pour isoler le bout de code qui prend du temps. Il y a tout de même presque deux secondes de différence entre l'admin et l'utilisateur normal.

    Tu peux essayer de mettre la liste en cache client.

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  16. #16
    Membre éclairé
    Homme Profil pro
    Architecte technique
    Inscrit en
    Février 2004
    Messages
    477
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 477
    Par défaut
    J'ai fais les traces dans mon code...

    Mon OnLoad s'execute bien en 2s ...
    Une fois terminé le chargement de la page continue ...
    Le code de le MasterPage est exécuté ...
    Et une fois terminé ça charge encore et là je ne sais pas ce qu'il se passe ...

    L'écran est affiché mais les combobox ne sont pas encore remplies ...
    Et au bout de 10s les combobox se chargent !

    Là vraiment je ne comprends pas ...

  17. #17
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Il faut que tu revois la conception de ta page. Va à l'essentiel. Qu'y a-t-il dans ton "OnLoad". Désactive le view state des contrôles qui n'en ont pas besoin. Vérifie que tu n'as pas du javascript en trop...
    "Winter is coming" (ma nouvelle page d'accueil)

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

Discussions similaires

  1. Problème de performance avec LEFT OUTER JOIN
    Par jgfa9 dans le forum Requêtes
    Réponses: 6
    Dernier message: 17/07/2005, 13h17
  2. [jeu]problème de performance d'un algo
    Par le Daoud dans le forum Algorithmes et structures de données
    Réponses: 12
    Dernier message: 30/05/2005, 16h07
  3. [C#] Probléme de performance avec IsDbNull
    Par jab dans le forum Windows Forms
    Réponses: 8
    Dernier message: 04/04/2005, 11h39
  4. [oracle 9i][Workbench]Problème de performance
    Par nuke_y dans le forum Oracle
    Réponses: 6
    Dernier message: 03/02/2005, 17h38
  5. [ POSTGRESQL ] Problème de performance
    Par Djouls64 dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 26/05/2003, 16h18

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