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

Windows Forms Discussion :

graph avec beaucoup de points, comment gérer la charge ?


Sujet :

Windows Forms

  1. #1
    Membre chevronné Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    1 931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 931
    Points : 1 975
    Points
    1 975
    Par défaut graph avec beaucoup de points, comment gérer la charge ?
    Bonjour

    J'ai utilisé Zedgraph et mschart pour afficher des courbes sur un graph à partir de la lecture d'un fichier CSV. Ca fonctionne très bien, avec zoom et tout un tas de fonctionnalités qui me vont très bien.
    Ce sont des courbes synchronisées sur la même abscisse (date et heure)

    Mais... avec beaucoup de points, le chargement du graph puis sa manipulation deviennent ridiculement lourds. Avec un CSV de 30Mo (je ne sais pas trop combien de points) l'ouverture prends une plombe avec Zedgraph puis le graph est presque intouchable ; avec mschart j'ai carrément stoppé l'application après qu'elle ait dépassé les 500Mo en mémoire !
    et ce CSV n'était pas très gros par rapport à ce que je souhaite visualiser...


    D'où ma question : Comment puis je afficher mes "monstres" courbes dans un graph avec zoom etc sans avoir besoin d'un calculateur de la NASA ?


    Merci par avance
    Il y a 10 sortes de personnes dans le monde : ceux qui comprennent le binaire et les autres

  2. #2
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 441
    Points
    4 441
    Par défaut zed ,calculateur "nasa",moniteur "nasa"
    bonjour petitours.
    Mon vieux maitre de classe qui etait un bon corse doue de bon sens ,m'arretais parfois en me disant "mabrouki , mais cessez de dire des absurdites......" et moi je ne comprenais pas à cet age,bien entendu.
    Mais le nombre d'absurdites que l'on peut etre amene à penser dans la vie est mirobolant.
    C'est pour cela que je te poses une question par curiosite :avec quel moniteur(dimension),on peut visualiser convenablement une courbe
    - mettons de 1 million de points x 1 million points convenablement.
    - mettons de 3 million de points x 3 million points convenablement.
    -etc....
    C'est pour cela que dans ton cas il faudrait examiner l'opportunite de ne charger en memoire que des "chunks" de coiurbe qu'on puisse visualiser convenablement.
    Tien ne sert de charger la totalite d'une courbe alors qu'elle ne peut etre visualisee normalement.
    bonne soiree....

  3. #3
    Membre chevronné Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    1 931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 931
    Points : 1 975
    Points
    1 975
    Par défaut
    Bonjour

    C'est tout l'objet de ma question : je sais bien que tout charger est délirant, mais je ne sais pas comment aborder techniquement le problème autrement.

    J'ai besoin d'une allure d'ensemble de tous mes points : je pourrais afficher 1 point sur X à pleine échelle.
    Quand Je zoom : afficher tous les points mais sur une plage de temps plus courte.

    Mais comment gérer cela tout en permettant de zoomer ou scroller l’échelle des temps de manière relativement continue ? (j'entends par continu la possibilité de scroller d'une manière qui permet à l'oeil et au cerveau de suivre la continuité des courbes ou de zoomer sans "perdre de vue" la zone à priori intéressante.

    Quand on charge toutes les données dans zedgraph ou chart on a cet avantage... Comment le "simuler" en chargeant des portions de data dans le chart ?

    Merci

    Merci par avance
    Il y a 10 sortes de personnes dans le monde : ceux qui comprennent le binaire et les autres

  4. #4
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Tu réduis le nombre de points utilisés en fonction du niveau de zooming : cela ne sert rigourseument à rien d'utiliser plus de 1200 point à l'écran.

    Donc, en zoom max, tu utilises exactement le nombre de point que tu as su rla portion de courbe affichée (correpondant à la définition de l'écran - le nom de points étant a priori égal à ta definition horizontal) et quand tu dezoom, tu gardes le même nombre de points mais que tu sélectionne par interpolation linéaire sur otn espace de points existants.

    Si tu as, disons, 1 million de points et une définition horizontale de 1000 points, ton zoom max représentera un millième de ta courbe et ton zoom mini représentera toute ta courbe mais interpolée avec seulement 1000 points.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  5. #5
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Points : 2 201
    Points
    2 201
    Par défaut
    Autrement est-ce que tu as essayé le microsoft Chart Control (le contrôle issu du rachat de Dundas par MS et non pas le vieux truc).

    Il y a la possibilité d'utiliser des séries de type fastpoint et fastline pour la gestion d'un grand nombre de point (avec une réduction des options graphiques disponible du coup). Peux être que ça tiendera mieux la charge?

    Autrement la piste donnée par MABROUKI est la bonne. Il est "inutile" de traiter ce qui n'apportera rien visuellement à ton graphique.

  6. #6
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2011
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2011
    Messages : 79
    Points : 118
    Points
    118
    Par défaut
    Il existe une suite de contrôls intéressant venant de chez NI : Measurement Studio (c'est pas gratos... !) mais y'a un composant ScatterGraph qui pourrait convenir.

    http://www.ni.com/mstudio

    @+,

    Philippe

  7. #7
    Membre chevronné Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    1 931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 931
    Points : 1 975
    Points
    1 975
    Par défaut
    Merdouille, je n'ai pas reçu de mail ne notification...

    Citation Envoyé par sinople Voir le message
    Autrement est-ce que tu as essayé le microsoft Chart Control (le contrôle issu du rachat de Dundas par MS et non pas le vieux truc).
    Il y a la possibilité d'utiliser des séries de type fastpoint et fastline pour la gestion d'un grand nombre de point (avec une réduction des options graphiques disponible du coup). Peux être que ça tiendera mieux la charge?
    Oui j'ai essayé mais comme je le dis dans mon premier message, outre le fait que les fastline n'affichent pas les points, label et compagnie (c'est beaucoup moins pratique pour leur visualisation), l'utilisation de fastline mschart reste moins fluide que zedgraph (qui affiche la matérialisation des points en plus)

    Merci phil_tema pour le lien, pour le moment je joue en amateur pour un association mais qui sait si ça ne pourrait pas me servir un jour !

    Bluedeep : ca fait depuis les dernier posts que j'essaie de faire cela mais je bute sur 2 problèmes
    1) mes datas viennent d'un fichier texte (csv) que je charge dans un stream que je prends soins de refermer comme j'ai vu plusieurs fois qu’il fallait bien penser à le faire. Ca prend beaucoup de temps de relire le fichier à chaque changement de zoom : Puis-je charger mon fichier dans un stream ou autre chose, préformaté pour un traitement plus rapide ?

    2)A chaque changement de zoom, je vide mes listes de point et je les reremplis avec la portion de points qui va bien. Idem, c'est lent et surtout ca "déconnecte" visuellement l'utilisateur des données le temps du changement et du coup on est pommé quand la courbe réapparait après le changement de zoom. Question un peu large : suis je sensé pouvoir me dispenser d'effacer les listes de point ?

    Merci à tous pour votre aide
    Il y a 10 sortes de personnes dans le monde : ceux qui comprennent le binaire et les autres

  8. #8
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Points : 2 201
    Points
    2 201
    Par défaut
    Tu devrais peut être essayer de stocker les points dans une collection ou tableau (je ne pourrais pas te dire ce qui est le plus approprié pour des millions d'enregistrement par contre) avant d'envoyer les données à l'affichage.

    La lenteur est peut être due au traitement du fichier csv plutot qu'à la gestion du graphique? Si c'est le cas faut regarder à optimiser cette partie en premier lieu.

    Quand au fait que l'application bouffe 500 Mb de mémoire c'est peut être pas l'idéal mais quand je vois que Firefox me bouffe parfois plus 1 Gb pour ouvrir 10 onglets voir pareille pour Flash avec une video (La palm étant pour le jeu Civilization 5, lui il dépasse alégrement les 2 Gb...) je me dis que si au final ton application n'a pas une expérience utilisateur désatreuse faut pas que ça t'empêche de dormir...

Discussions similaires

  1. graphiques courbes avec beaucoup de points
    Par petitours dans le forum Windows Forms
    Réponses: 2
    Dernier message: 22/10/2013, 14h34
  2. Réponses: 4
    Dernier message: 11/03/2010, 18h14
  3. Comment gérer un système avec beaucoup d'utilisateurs ?
    Par khayyam90 dans le forum Administration système
    Réponses: 8
    Dernier message: 05/02/2009, 17h37
  4. Réponses: 5
    Dernier message: 06/09/2005, 16h18
  5. Réponses: 5
    Dernier message: 29/10/2004, 16h20

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