Impressum · Kontakt · Hilfe
Besucher online · Mitglieder



Portal > Foren > Java > Allgemeine Java-Programmierung > Performance Problem mit zu langem String
Antwort
 
Themen-Optionen
Alt 03.04.2005, 18:27   Nach oben    #1
Gottzilla
Erfahrener Benutzer
 
Benutzerbild von Gottzilla
 
Registriert seit: 02.02.2005
Beiträge: 515
Standard Performance Problem mit zu langem String

Hi, ich hab einen ewig langen StringBuffer und den will ich in nem JTextArea ausgeben. Nur dauert das ewig, da ich zuerst einen String brauch

PHP-Code:
 textarea.setText(stringbuffer.toString()); 
Das Einlesen geht aber dank StringBuffer und append so schnell, dass meine JProgressBar so schnell von null auf 100 D) ist, dass man einen Fortschritt gar nicht sehen kann. Nur das Ausgeben dauert dann wieder verdammt lang, wodurch man den Eindruck gewinnen könnte, dass das Programm abgestürzt sei. Kennt da jemand eine schnellere Methode?
Gottzilla ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 03.04.2005, 21:06   Nach oben    #2
Gottzilla
Erfahrener Benutzer
 
Benutzerbild von Gottzilla
 
Registriert seit: 02.02.2005
Beiträge: 515
Standard

Hab das jetzt gelöst indem ich ab und an mal per append zum TextArea hinzufüge und dadurch nicht alles auf einmal kommt. Jetzt hab ich aber noch ein letztes Problem . Das Programm und der PC allgemein sind verdammt langsam, nachdem ich den String in das JTextArea ausgegeben habe. Hab nen extra Thread gemacht, kann es sein, dass der noch bis zur Unendlichkeit weiterläuft?
Gottzilla ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 04.04.2005, 09:56   Nach oben    #3
pago
Projektleiter
 
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.091
Standard

Der Thread läuft solange, bis sein kompletter Code ausgeführt wurde. Wenn du da also ne Endlosschleife drin hast läuft er unendlich lange (bis du System.exit ausführst oder den thread mit interrupt() beendest).
__________________
Patrick Gotthardts Weblog.
pago ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 04.04.2005, 09:58   Nach oben    #4
Gottzilla
Erfahrener Benutzer
 
Benutzerbild von Gottzilla
 
Registriert seit: 02.02.2005
Beiträge: 515
Standard

Gut, dann kann ich das schonmal ausschließen, weil er definitiv komplett durchläuft! Wie groß ist die Wahrscheinlichkeit auf ein memory leak? Bzw. kann ich dem Garbage Collector explizite Anweisungen geben, was er killen soll?
Gottzilla ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 04.04.2005, 10:18   Nach oben    #5
Gottzilla
Erfahrener Benutzer
 
Benutzerbild von Gottzilla
 
Registriert seit: 02.02.2005
Beiträge: 515
Standard

Sorry, muss mich korrigieren! Andere Anwendungen sind nicht langsam! Einzig mein Programm lahmt. Vor allem wenn ich dann meine ganz Ausgabe mit "STRG + a" markieren will, bekomme ich eine CPU auslastung von 100% und das Ewig! Wenn ich nur einen kleinen Teil (vielleicht 200 Zeichen) markiere, dann hab ich auch eine CPU Auslastung von 100% für ein paar Sekunden. Sogar das einfache Scrollen durch den Text hackt und ruckelt. Ganz zu schweigen davon, wenn ich ein Zeichen löschen will.
Gottzilla ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 04.04.2005, 12:44   Nach oben    #6
pago
Projektleiter
 
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.091
Standard

Was zum Geier machst du da eigentlich? Ich hatte selbst bei ner JTextPane keine Probleme (trotz Syntax-Hervorherbung auf Document-Basis) bei Texten < 10.000 Zeilen.
Irgendwas muss da grundlegend falsch laufen.
Könntest du vielleicht etwas Quellcode posten?
__________________
Patrick Gotthardts Weblog.
pago ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 04.04.2005, 13:17   Nach oben    #7
Gottzilla
Erfahrener Benutzer
 
Benutzerbild von Gottzilla
 
Registriert seit: 02.02.2005
Beiträge: 515
Standard

PHP-Code:
   void konvert() { 
      
      new 
Thread(new Runnable() { 
         public 
void run() { 
            
changeAusgabe(); 
            
char[] original eingabe.getText().toCharArray();  
            
ausgabe.setText(""); 
            
sz = new StringBuffer(); 
            
fortschritt.setMaximum(original.length 1); 
            
performance 0;
            for (
int a 0original.lengtha++) { 
               
soweit a
               
performance++; 
               
SwingUtilities.invokeLater( new Runnable() { 
                  public 
void run() { 
                     
fortschritt.setValue(soweit); 
                  } 
               } );  
               if ((
lesbar == true) && (nix == 4)) { 
                   if ((int)
original[a] >= 100) { 
                    
sz.append("0"); 
                } 
                else if (((int)
original[a] >= 10) && ((int)original[a] < 100)) { 
                    
sz.append("00"); 
                } 
                else { 
                    
sz.append("000"); 
                } 
                
sz.append((int)original[a]); 
                } 
               else if ((
lesbar == true) && (nix == 3)) { 
                if (((int)
original[a] >= 10) && ((int)original[a] < 100)) { 
                    
sz.append("0"); 
                } 
                else if ((int)
original[a] < 10) { 
                    
sz.append("00"); 
                } 
                
sz.append((int)original[a]); 
               } 
               else if ((
lesbar == true) && (nix == 0)) { 
                
sz.append((int)original[a] + Trennzeichen); 
               } 
               else if (
lesbar == false) { 
                
sz.append((int)original[a]); 
               } 
               if (
performance >= original.length 50) { // Das hier ist dafür da, dass das Textfeld 
                  
ausgabe.append(sz.toString()); // regelmäßig aktualisiert wird 
                  
sz = new StringBuffer(); // damit nicht alles auf einmal reingeschrieben werden 
                  
performance 0// muss, was bei mir ja sehr lange dauert 
               

            }    
            
ausgabe.append(sz.toString()); 
         } 
      } ).
start(); 
   } 
Hier mal die Methode. Sie konvertiert einen Text in ASCII-Code. Und das entweder in normalen ASCII oder eindeutigen (mit nem Trennzeichen oder aufgefüllt mir Nullen, ...)
Gottzilla ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 04.04.2005, 14:58   Nach oben    #8
Gottzilla
Erfahrener Benutzer
 
Benutzerbild von Gottzilla
 
Registriert seit: 02.02.2005
Beiträge: 515
Standard

Kann es sein, dass ein JTextArea extreme Probleme mit langen Texten bekommt? Mein Text ist größer als 20000 Zeichen.
Gottzilla ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 04.04.2005, 15:28   Nach oben    #9
pago
Projektleiter
 
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.091
Standard

Das kann gut sein. Ersetze mal die JTextArea testweise durch die von JEdit. Die kommt auf jedenfall mit großen Textmengen klar. Ist allerdings auch keine wirkliche Lösung für dein Problem (hilft uns aber beim eingrenzen des Problems).
__________________
Patrick Gotthardts Weblog.
pago ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 04.04.2005, 15:37   Nach oben    #10
Gottzilla
Erfahrener Benutzer
 
Benutzerbild von Gottzilla
 
Registriert seit: 02.02.2005
Beiträge: 515
Standard

Ich weiß woran es liegt! Nur nicht wie ich es behebe! Ich hab LineWrap in meinem JTextArea! Wenn ich das ausschalte, gehts einwandfrei (Sieht aber dementsprechend scheiße aus). Schalte ich es wieder ein, hab ich mein Problem wieder.
Gottzilla ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.
Trackbacks are An
Pingbacks are An
Refbacks are Aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Problem bei Verarbeitung von Templates (Eigene Klassen) dago PHP-Programmierung 21 31.08.2006 16:02
Symbolklassen festlegen anna Allgemeine Java-Programmierung 2 12.11.2005 11:30
Datei einlesen. cyberdevil87 Allgemeine Java-Programmierung 3 27.06.2005 09:22
Problem mit getText()-Methode Paule Allgemeine Java-Programmierung 5 19.03.2005 20:38
string in teilbereiche zerteilen!? Niki_Tesla Allgemeine Java-Programmierung 10 14.02.2005 09:11


Alle Zeitangaben in WEZ +2. Es ist jetzt 06:15 Uhr.

Nach oben
Wir nutzen das Zend Framework, vBulletin (vBulletin v3.7.2, Copyright ©2000-2008, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.0.0) und vBSEO.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44