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 :

Datagridview Virtual Mode


Sujet :

Windows Forms

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 18
    Points : 18
    Points
    18
    Par défaut Datagridview Virtual Mode
    Bonjour à tous,

    j'ai un grand volume de données (530000 lignes, 14 champs,non modifiable) à afficher dans un Datagridview (DGV), dans le but de comparer les perfomances entre un affichage en c# .net avec ce Datagridview et un composant Table Box de l'ERP Microsoft Dynamics Navision, les deux pointant donc vers la même table comportant ces 530000 records, la base de données est SQL Server 2008.

    d'après le MSDN, pour l'affichage d'un grand nombre d'enregistrement, il préconise de passser le DGV en Virtual mode à true, et utiliser l'évènement CellValueNeeded etc...
    je pensais que ça aller permettre d'optimiser le temps de chargement initial du DGV et la mémoire occupé par le jeux de données renvoyés.

    j'ai certainement du me tromper, mais je ne constate pas d'amélioration, par rapport à l'utilisation de la propriété Datasource et du Binding (Fill), car même en virtual Mode il faut remplir un objet contenant les données à afficher.

    les résulats que je constate :

    - Datasource + méthode Fill : 30 secondes pour ouvrir le Winfrom contenant le DGV avec les 530000 lignes et plus de 600 Mo d'occupation mémoire, scroll des données dans le DGV sans temps de latence

    - Virtual Mode + CellValueNeeded : 10 seconde pour ouvrir le Winfrom contenant le DGV avec les 530000 lignes et plus de 200 Mo d'occupation mémoire, scroll des données dans le DGV sans temps de latence

    - SQLDataReader + CellValueNeeded : ouverture du Winform instanée et 8 Mo d'occupation mémoire, le problème c'est que le SQLDataReader ne permet que d'avancé (forward) dans le jeux de données envoyé , scroll des données dans le DGV sans temps de latence mais que dans un sens.

    - pour finir l'ERP Navision avec son langague propriétaire qui date de 1995 (je crois) ouvre instanément le formulaire contenant le Table Box avec les 530000 lignes et entre 6 et 8 Mo d'occupation mémoire, scroll des données sans temps de latence, et insertion, modification et suppression en temps réels !

    à croire que le proverbe se vérifie : "c'est dans les vieilles marmites qu'on fait les meilleurs soupes".

    j'ai essayé de trouver un subterfuge avec la méthode FILL qui peut prendre en paramètre index de l'enregistrement de départ et le nombre d'engistrement total pour essayé d'optimisé la mémoire et le temps, mais j'ai un temps de latence quand je demande le chargement dans le DGV de la prochaine borne d'enregistrement quand je scroll.

    donc pour finir, à votre avis est-il possible en c# .net de refaire un composant au performance équivalente de celui de cet ERP ? si oui si vous avez une piste pour orienter mes recherches.

    merci d'avance.

    cordialement

  2. #2
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Pour obtenir une bonne performance avec le virtual mode, il faudrait jouer avec 2 ou 3 blocs résultats de Fill:
    - le bloc dans lequel on scrollerésultat courant,
    - le bloc suivant,
    -le bloc précédent.

    Le principe est le suivant : quand on scrolle et que le CellValueNeeded arrive dans les 10% de la fin (ou du début) de bloc courant, on lance un BackgroundWorker pour charger le bloc suivant (ou précédent).

  3. #3
    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 : 41
    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
    J'ai pas vraiement d'expérience avec le DGV en virtuel mais peut être que ce liens sur MSDN peut t'aider

    http://msdn.microsoft.com/en-us/library/15a31akc.aspx

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 18
    Points : 18
    Points
    18
    Par défaut
    merci à vous pour vos réponses.
    @+

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

Discussions similaires

  1. Datagridview Selection Mode
    Par leeloo95 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 15/03/2010, 15h18
  2. Afficher le detail dans un datagridview a la mode datagrid
    Par skunkies dans le forum Windows Forms
    Réponses: 5
    Dernier message: 05/03/2009, 11h15
  3. Réponses: 2
    Dernier message: 21/05/2008, 10h55
  4. [c# 2.0] DatagridView Virtual Mode et Databinding
    Par 2020 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 22/10/2007, 12h18
  5. [VB.NET] Binder DatagridView en mode Design
    Par eagle-ray dans le forum VB.NET
    Réponses: 1
    Dernier message: 05/01/2006, 08h08

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