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

Dotnet Discussion :

ListView et charge CPU


Sujet :

Dotnet

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    soa
    soa est déconnecté
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 51
    Par défaut ListView et charge CPU
    Bonjour

    Je voulais vous demander s'il était normal qu'une ListView (affichage de type: detail), consomme un max de puissance CPU (à savoir 5-15% de taux d'utilisation CPU [Core Duo T2400]), juste parce qu'on la rafraichi toutes les 2,5 secondes.

    Je précise que c'est bien l'affichage qui consomme la puissance et pas le traitement qu'il y a avant des donnés qu'on cherche à afficher.
    De plus cette liste ne contient que 4-6 éléments, 5 colonnes et 2-3 groupes au max. Rien de plus!

    J'en reviens toujours pas, rafraichir la listview toute les 2,5sec ne me semble pas exagéré.

    Donc bref, question, est-ce que c'est normal?


    Merci

  2. #2
    Membre confirmé Avatar de wizad
    Profil pro
    Étudiant
    Inscrit en
    Août 2004
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2004
    Messages : 103
    Par défaut
    En soi ça ne me semble pas plus anormal que ça. Quel technologie est-ce (WindowsForms, WPF, Silverlight,...)?

    Par contre une remarque : pourquoi diable as-tu besoin de faire un "rafraîchissement" toute les 2,5s?

    EDIT : peux tu nous montrer le code rafraîchissant cette listview?

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    A mon avis c'est pas la ListView proprement dite qui consomme les ressources, mais plutôt le code qui charge les données... Elles viennent d'où ces données ? D'une base de données ?

  4. #4
    soa
    soa est déconnecté
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 51
    Par défaut
    Citation Envoyé par tomlev Voir le message
    A mon avis c'est pas la ListView proprement dite qui consomme les ressources, mais plutôt le code qui charge les données... Elles viennent d'où ces données ? D'une base de données ?
    Non non, comme je l'ai dit c'est pas le code qui sert à charger les donnés à afficher qui est en cause.
    C'est simple à tester. Si je met uniquement en commentaire la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maListview.add(monItem)
    ben la charge CPU est pratiquement nulle, alors que l'objet monItem contient bien les donnés à afficher, respectivement le traitement pour récupérer les divers donné a bien été réalisé.
    En plus ces donnés sont issues d'un objet, et non d'une db ou fichier, et sont de type String ou IPAddress, bref des trucs où on a pas besoin de faire beaucoup de conversion pour mettre dans un item de listview.

    Encore plus bizarre, j'ai remarqué ce matin que même si je ne rafraichissais pas la listview toutes les 2.5sec, que je l'affichais seulement une fois et pas plus, ben la charge conso reste élevée (10-20%). C'est à plus rien y comprendre.

    En résumé, dès qu'il y a un item à afficher cette satanée listview me pompe un max.

  5. #5
    soa
    soa est déconnecté
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 51
    Par défaut
    Citation Envoyé par wizad Voir le message
    En soi ça ne me semble pas plus anormal que ça. Quel technologie est-ce (WindowsForms, WPF, Silverlight,...)?

    Par contre une remarque : pourquoi diable as-tu besoin de faire un "rafraîchissement" toute les 2,5s?

    EDIT : peux tu nous montrer le code rafraîchissant cette listview?
    C'est une liste des PC dispo sur le réseau local, et je check s'ils sont online ou pas, certes 2,5s c'est beaucoup, mais ca change rien, même sans timer, dés que la listview affiche les item ca pompe, même sans la rafréchir :S.


    D'ailleurs je viens de tester une chose. Au lieu d'ajouter l'item (rempli) dans la liste view, j'affiche le contenu de l'item dans la console. Ben pas de problème conso minimal. Donc c'est bien la listview (OnPaint foireux???) qui est en cause :-/

    EDIT:
    Concrètement.
    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
                        Console.ForegroundColor = ConsoleColor.White;
                        Console.Write("{0}", lvItem.SubItems[1].Text);
     
                        Console.ForegroundColor = ConsoleColor.Green;
                        Console.Write("  {0}", lvItem.SubItems[2].Text);
                        Console.Write("  {0}", lvItem.SubItems[3].Text);
     
                        Console.ForegroundColor = ConsoleColor.Blue;
                        Console.Write("  {0}", lvItem.SubItems[4].Text);
     
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.WriteLine("  {0}", lvItem.SubItems[5].Text);
                        Console.ResetColor();
     
                        //lvHosts.Items.Add(lvItem);
    La pas de prob. Par contre si je décommente la dernière ligne c'est la "cata".

    (Le Subitems[0], c'est juste une icone 16x16px.)

  6. #6
    Membre chevronné Avatar de _PascalC_
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2008
    Messages : 220
    Par défaut
    Salut, as-tu essayé d'interrompre la logique de redessin du ListView pendant que tu rechargeais les données ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    listview1.BeginUpdate();
    for(int i=0; i < 100; i++)
        listview1.Items.Add("...");
    listview1.EndUpdate();
    Pascal

  7. #7
    soa
    soa est déconnecté
    Membre averti
    Inscrit en
    Avril 2005
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 51
    Par défaut
    Citation Envoyé par _PascalC_ Voir le message
    Salut, as-tu essayé d'interrompre la logique de redessin du ListView pendant que tu rechargeais les données ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    listview1.BeginUpdate();
    for(int i=0; i < 100; i++)
        listview1.Items.Add("...");
    listview1.EndUpdate();
    Pascal
    Salut

    Oui j'avais déjà testé ca aussi. Ca ne change rien.


    C'est désespérant ce truc :/. C'est une appli qui doit tourner en fond de tâche, mais si elle pompe 20% de CPU pour rien, c'est nulle. Bon alors certes dès que je ferme la fenêtre contenant la listview la charge CPU revient à la normal, mais quand même. :-/

    Mince c'est juste une fenêtre avec 2 radiobuttons, un button ok, un autre annuler, un bouton refresh et la dite listview.

  8. #8
    Membre Expert Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Par défaut
    Personnellement, je n'ai jamais rien observé de tel : une fois la liste construite, je ne vois pas pourquoi il y aurait consommation de CPU.

    A mon avis, prends un peu de recul, songe à l'ensemble de ton code et tu trouveras ce qui ne colle pas. Mais je ne vois pas pourquoi la ListView serait en cause.

Discussions similaires

  1. [Système]charge CPU
    Par dehbi dans le forum API standards et tierces
    Réponses: 10
    Dernier message: 04/08/2005, 11h58
  2. Monter la charge CPU
    Par Dr_GonZO dans le forum Administration système
    Réponses: 2
    Dernier message: 19/05/2005, 11h08
  3. problème de charge CPU SUR ORACLE
    Par crasho007 dans le forum Administration
    Réponses: 35
    Dernier message: 19/05/2004, 15h35
  4. Charge CPU avec prog opengl + win32
    Par TibobiT dans le forum MFC
    Réponses: 2
    Dernier message: 12/05/2004, 19h26

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