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

SWT/JFace Java Discussion :

Lister grosses quantités données dans une table


Sujet :

SWT/JFace Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Mai 2010
    Messages : 34
    Par défaut Lister grosses quantités données dans une table
    Bonjour,
    je suis en train de me poser une question d'architecture de mon prog.
    Je reçois une important quantité de données par TCP/IP, et j'affiche ces données (du log en gros). Mettons que j'en reçoive 500 à 1000 par secondes (1K/message), et que je limite l'affiche à 20 000 messages histoire de pas exploser la mémoire. Et je suis parti sur SWT/JFace pour mon GUI.

    Ma première idée:
    Un thread qui lit sur le socket, un thread qui fait le remplissage des TableItem d'une Table.
    Une Table, c'est sympa, par contre, si je dois faire du filtrage, faut que je me code pas mal de trucs. Sinon en perf, c'est pas trop mal.

    Autre idée:
    Un thread qui lit sur le socket, un thread qui remplit une liste d'Objets (MesMessages) et un TableViewer pour l'affichage.
    L'avantage du TableViewer est qu'il possède des outils de filtrage, par contre, je connais pas les perfs vs une Table classique.

    Autres idées?

    Que me conseilleriez-vous pour que mon prog consomme le moins de mémoire et de CPU (dans la mesure du possible) ?

    Merci
    Benoit

  2. #2
    Membre Expert
    Avatar de Gueritarish
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 800
    Par défaut
    Salut,

    La meilleure idée est, à mon sens, de passer par un TableViewer virtuel qui fait du lazy-loading. En gros, la seule différence pour toi, c'est qu'il faut donner au TableViewer le nombre d'Item dans la table et utiliser le style SWT.VIRTUAL.

    Voilà, à+
    Gueritarish

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Mai 2010
    Messages : 34
    Par défaut
    C'est effectivement impressionnant de rapidité.
    J'ai mis 1 000 000 d'items, rajouté un String de 200 caractères dans le modèle, et ça a mis moins d'1 s à s'afficher, et une occupation mémoire de 100MB.


    Allez, je vais l'implémenter de suite dans mon proj. Je posterai une évaluation des perfs pour clore le sujet.

    Merci !
    benoit

  4. #4
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Mai 2010
    Messages : 34
    Par défaut
    Je réagis au setItemCount dont tu parles pour sépcifier le nombre d'items dans la table.
    Cette table, je vais y ajouter les éléments 1 par 1 au fil de l'acquisition.
    Il faut appeler setItemCount à chaque fois ? en gros, on peut utiliser ce tableviewer de façon dynamique ?

  5. #5
    Membre Expert
    Avatar de Gueritarish
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 800
    Par défaut
    Pourquoi tu veux ajouter les éléments 1 par 1?
    Je me suis basé sur le Snippet que je t'ai envoyé et sur celui de SWT pour créer celui-ci... Si je peux ajouter 100 éléments toutes les 500ms et me payer le luxe de faire un sort sur tout ça, je pense que tu peux très bien les ajouter 1 par 1...
    Mais tu devrais peut-être attendre d'en avoir "assez" (je connais pas le besoin... mais 1 par 1 me paraît être un peu excessif pour une mise à jour).

    Voilà, à+
    Gueritarish
    Fichiers attachés Fichiers attachés

  6. #6
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2010
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Mai 2010
    Messages : 34
    Par défaut
    En fait, je me suis mal exprimé. En disant ça, je voulais dire que je ne sais pas combien je vais recevoir de données. Ca peut etre 1/s ou 1000/s. Désolé pour la confusion.

    Mais l'exemple Snippet151 me fait mieux comprendre comment ça marche. C'est très clair maintenant (et ultra simple...).

    Merci pour l'aide !

    Benoit

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

Discussions similaires

  1. Problème de récupérations de données dans une table mysql
    Par Helpine dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 09/03/2006, 19h07
  2. Réponses: 3
    Dernier message: 07/02/2006, 13h26
  3. [MySQL] Modifier une donnée dans une table
    Par leloup84 dans le forum PHP & Base de données
    Réponses: 27
    Dernier message: 02/02/2006, 13h25
  4. Inserer des données dans une table access SQL
    Par ouellet5 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 23/11/2005, 21h11
  5. Réponses: 2
    Dernier message: 15/06/2005, 17h32

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