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

AWT/Swing Java Discussion :

Ajout de lignes JTextarea performance


Sujet :

AWT/Swing Java

  1. #1
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2013
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2013
    Messages : 55
    Par défaut Ajout de lignes JTextarea performance
    Bonjour,

    Je doit ajouter des lignes a mon JTextarea (plusieurs milliers) dans une boucle (j'utilise StringBuilder pour concaténer) ça devient vite très très lent a l'affichage comment faire pour optimiser ?

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    Je ne comprends pas ce que vient faire un StringBuilder dans la notion d'ajout de lignes à un JTextArea (ou plutôt, j'ai peur de comprendre, que tu remplaces le texte complet, au lieu d'utiliser la méthode insert(String str, int pos)). De toute manière, la gestion du modèle de document a ses limites, donc tu auras forcément un ralentissement sur certains fonctionnalités (sauvegarde par exemple, copier tout...). Combien de milliers de lignes tu affiches ? plutôt 3 ou plutôt 150 ? Des lignes de combien de caractères ? Peut-être se poser la question de la pertinence d'un JTextArea, ou d'un composant unique ? Ou d'autres artifices... Dans mon application, j'utilise un composant basé sur le JEditorPane : j'ai des articles de 15000 ou 20000 signes (en html) en production, et l'édition n'est pas la partie la plus lente (je viens de faire un test, et ça se met à ramer vers 300000 lignes (plus de 10 millions de caractères), mais faut dire que la mémoire est montée à 600 Mo pour l'application,( et que j'ai 4 éclipses ouverts plus un indesign ), et que j'ai l'impression qu'il y a un problème avec le comptage de lignes qui peine un peu (merci pour m'avoir, indirectement, mis le doigt sur ce problème )).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2013
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2013
    Messages : 55
    Par défaut
    Salut le StringBuilder vient juste pour concaténer la chaîne de caractères que j'ajoute avec la méthode setText j'ai essayer avec insert que je ne connaissait pas c'est carrément plus rapide de plus j'ai retirer la concaténation donc plus de souci sinon il s'agit d'environ 10.000 lignes (pas toujours le cas) pas trés longues merci je met en résolu

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    10000 lignes : le JTextArea devrait pouvoir les supporter sans problème et sans ralentissement. C'est sûr que si tu fais des setText(), il faut que le composant reconstruise tout le modèle à chaque fois, alors qu'avec insert, seuls les nouveaux caractères vont être transformés en fragment de modèle, qui sera ajouté à la fin du modèle, et ce sera beaucoup plus rapide.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

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

Discussions similaires

  1. [JTable] ajouter une ligne
    Par rvfranck dans le forum Composants
    Réponses: 3
    Dernier message: 30/03/2005, 14h25
  2. Ajouter une ligne à un tableau
    Par Oluha dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 16/02/2005, 15h20
  3. Ajouter une ligne dans une liste via un POPUP
    Par seblo_scoqi dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 25/01/2005, 16h20
  4. [Fichier] Ajout des lignes de doc dans arraylist
    Par 3adoula dans le forum Entrée/Sortie
    Réponses: 9
    Dernier message: 29/04/2004, 22h41

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