Performance

mar

Mitglied
Hallo an alle,

ich habe hier ein Problem, und brauche eure Hilfe wenn das prog startet
schießt die CPU Auslastung enorm nach oben, hat jemand von euch eine IDEE
wie ich die Auslastung runterkriege.
Danke
Java:
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.TimerTask;
import java.awt.Color;
import java.awt.Dimension;
import java.io.FileReader;
import java.io.IOException;
import java.util.Timer;
 import java.util.Timer;
import java.util.TimerTask;
 import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.TimerTask;
import javax.swing.JTextField;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
 
public class Main extends JFrame {
    private static final long serialVersionUID = 1L;
 
    private JTextField tf;
   
    public Main() {
         setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
 
        

        setAlwaysOnTop(rootPaneCheckingEnabled);
        // setzt die Position des Jrames
        setLocation(500, 80);
        // nimmt min. max. close weg
        setUndecorated(true);
        // JTextArea textArea = new JTextArea();
        tf = new JTextField();
        // kannst du nicht bearbeiten
        tf.setEditable(false);
 
        //JScrollPane scrollPane = new JScrollPane(tf);
        //scrollPane.setPreferredSize(new Dimension(230, 50));

        tf.setPreferredSize(new Dimension(200,30));

        
        add(tf);
        pack();
        setVisible(true);
        tf.setCursor(null);
 
        tf.setBackground(Color.red);
        tf.setForeground(Color.green);
        tf.setCaretPosition(tf.getText().length());
        tf.setHighlighter(null);
       
        new Timer().schedule(new TextMarqueeTimer(tf), 0L, 200L);
    }
 
    public String readLine(FileReader reader) throws IOException {
        String line = null;                                              //-1
        for (int readInt = 0; (readInt = reader.read()) != 13 && readInt != -1;) {
            String s = String.valueOf((char) readInt);
            if (line == null)
                line = s;
            else
                line += s;
        }
        reader.read();
        return (line);
    }
 
    public static void main(String[] args) {
        new Main();
    }
}

 
class CheckFileContentTimer extends TimerTask {
    private static final File FILE = new File("C:/loi/data.txt");
   
    private long lastMod;
    private TextMarqueeTimer textMarqueeTimer;
   
    CheckFileContentTimer(TextMarqueeTimer textMarqueeTimer) {
        super();
        this.textMarqueeTimer = textMarqueeTimer;
    }
    public void run() {
        while(true) {
            try {
                long atmLastMod = FILE.lastModified();
 
                if(atmLastMod > lastMod) {
                    FileReader fileReader = new FileReader(FILE);
                   
                    StringBuilder stringBuilder = new StringBuilder();
                    for (String incomingLine = null; !(incomingLine = readLine(fileReader)).equals(".");) {
                        stringBuilder.append(incomingLine.concat);
                    }
                    fileReader.close();
                    lastMod = atmLastMod;
                    textMarqueeTimer.setNextText(stringBuilder.toString());
                }       
            }
            catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    public String readLine(FileReader reader) throws IOException {
        StringBuilder builder = new StringBuilder();
        for (int readInt = 0; (readInt = reader.read()) != 13 && readInt != -1;) {
            builder.append((char) readInt);
        }
        reader.read();
        return (builder.toString());
    }
}

 
class TextMarqueeTimer extends TimerTask {
   
    private String atmText = "";
    private String nextText = "";
    private JTextField textField;
   
    TextMarqueeTimer(JTextField textField) {
        new  Timer().schedule(new CheckFileContentTimer(this), 0L, 100L);
        this.textField = textField;
    }
    public void run() {
        if(atmText != null && nextText != null) {
            if(!atmText.equals(nextText)) {
                atmText = nextText;
                textField.setText(atmText);
            } else {
                if(atmText.length() > 0) {
                    String changedText = textField.getText();
                    String withoutFirstChar = changedText.substring(1, changedText.length());
 
                    char firstChar = changedText.charAt(0);
                    String newText = withoutFirstChar.concat(String.valueOf(firstChar));
                    textField.setText(newText);
                }
            }          
        }
    }
    public void setNextText(String nextText) {
        this.nextText = nextText;
    }
}
 

Geeeee

Bekanntes Mitglied
Naja, alle 100 ms die gesamte Datei durchlesen ist wohl etwas aufwendig. Da kommt er einfach nicht mehr zur Ruhe würde ich sagen.
 

Ark

Top Contributor
Ohne alles in seiner Einzelheit gesehen zu haben: Verzichte auf deine [c]readLine()[/c]-Methoden und benutze [c]BufferedReader.readLine()[/c]. Das löst zwar wahrscheinlich nicht das grundsätzliche Problem, macht das Programm als Ganzes jedoch genügsamer, was Ressourcen angeht.

Ark
 

Empire Phoenix

Top Contributor
Java:
        String line = null;                                              //-1
        for (int readInt = 0; (readInt = reader.read()) != 13 && readInt != -1;) {
            String s = String.valueOf((char) readInt);
            if (line == null)
                line = s;
            else
                line += s;
        }

Benutze string builder, der wird so lange brachen ejdesmal die dinger zu allokieren. In java sind strings constanten, die werden jedesmal neu erstellt.
 
Zuletzt bearbeitet von einem Moderator:

mar

Mitglied
Hallo ich nochmal,
ich habe da noch ein anderes Problem,
zur Zeit läuft die Eingabe so, das ich immer ein Punkt in der .txt Datei machen muss um
die Eingabe anzuzeigen, hat jemand einen Rat für mich wie ich das anders lösen kann.

Danke
gruß
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
8u3631984 Frage Performance bei Linked List und Array List Allgemeine Java-Themen 5
H Performance einer Monte-Carlo-Simulation verbessern Allgemeine Java-Themen 6
goldmensch Datentypen Welche Methode hat die bessere Performance? Allgemeine Java-Themen 12
H Watson-Crick-Complement Performance Allgemeine Java-Themen 18
L Best Practice Auslagerung von Code = Performance Optimierung? Allgemeine Java-Themen 4
B Performance Messungen Allgemeine Java-Themen 4
J Threads verbessern die Performance NICHT ? Allgemeine Java-Themen 8
X Performance für Tomcat / Apache optimieren Allgemeine Java-Themen 2
I Performance - JDBC UPC PoolDataSoure Allgemeine Java-Themen 0
E Lambda filter performance Allgemeine Java-Themen 2
D Performance-Probleme mit Joda-Time Allgemeine Java-Themen 3
A Jasper Report Performance bei PDF erzeugen Allgemeine Java-Themen 0
A Best Practice Variablen vertauschen - Performance Allgemeine Java-Themen 1
R DBUnit Performance Probleme Allgemeine Java-Themen 0
P Performance: super explizit erwähnen oder weglassen? Allgemeine Java-Themen 5
S starke performance probleme des forums Allgemeine Java-Themen 10
C Performance Tips Allgemeine Java-Themen 13
A Performance/Speicherplatz-Nutzung bei Tests Allgemeine Java-Themen 6
R Java Performance testen Allgemeine Java-Themen 18
StrikeTom Java Performance Fragen Allgemeine Java-Themen 5
V Performance steigern Allgemeine Java-Themen 7
D Reflection-Performance Allgemeine Java-Themen 7
M Einfluss von Caching auf die Performance (große Arrays) Allgemeine Java-Themen 24
R Collections Performance einer HashMap Allgemeine Java-Themen 26
i<3java [Groovy/Grails](oder auch java) Mögliche Performance Probleme bei Mailversendung Allgemeine Java-Themen 2
D Performance Objektallokation Allgemeine Java-Themen 28
J Java Performance nicht nachvollziehbar Allgemeine Java-Themen 3
I Library für High Performance Mime Type Erkennung Allgemeine Java-Themen 8
S Performance Frage: Objekt oder static? Allgemeine Java-Themen 33
M Runtime.exec() - Performance / Frage zu Threads Allgemeine Java-Themen 5
M Performance Allgemeine Java-Themen 6
E Performance website download Allgemeine Java-Themen 13
MQue Performance Methodenaufruf - if Abfrage Allgemeine Java-Themen 19
hdi Was frisst in meinem Programm den Speicher / verschlechtert die Performance Allgemeine Java-Themen 11
J Performance von Java GUI-Anwendungen Allgemeine Java-Themen 2
U Java Performance im Vergleich zu C++ in speziellem Anwendungsfall Allgemeine Java-Themen 6
S Performance und Function Call Depth Allgemeine Java-Themen 6
H Performance Vorteil durch Wechsel der JVM? Allgemeine Java-Themen 6
A Performance: byte[] in byte[][][] konvertieren Allgemeine Java-Themen 2
T Performance ArrayList#remove Allgemeine Java-Themen 8
ARadauer Performance Pptimierung -Lesen/Schreiben Allgemeine Java-Themen 10
Chris81T Performance Problem durch mehrfaches Starten eines JAVA Prog Allgemeine Java-Themen 8
G Hibernate, JTable und Performance Allgemeine Java-Themen 17
M Listener und Performance Allgemeine Java-Themen 9
P Performance: Ziehen ohne Zurücklegen (große Datenmenge) Allgemeine Java-Themen 10
D Performance: ArrayList vs. Array vs. "Eigene Liste&quot Allgemeine Java-Themen 8
M nichtreferenzierte Objekte auf NULL setzen -> Performance Allgemeine Java-Themen 4
S Ursache für schlechte Performance Allgemeine Java-Themen 2
L Java Performance Check Tool Allgemeine Java-Themen 3
S Performance von Comparator Allgemeine Java-Themen 3
egrath Performance Problem mit File-I/O Allgemeine Java-Themen 6
S Performance Problem Allgemeine Java-Themen 11
X Java Performance auf Sun Systemen bzw. generell Allgemeine Java-Themen 4
T Performance String-Operationen und StringBuffer (1.4und 1.5) Allgemeine Java-Themen 18
P miese performance bei nem BufferedImage + repaint :( Allgemeine Java-Themen 6
T Performance-Grundlagen Allgemeine Java-Themen 4
G Performance Problem bei der Übertragung Server zum Client Allgemeine Java-Themen 3
V Performance Leck finden Allgemeine Java-Themen 3
T Tile Game Performance Allgemeine Java-Themen 32
M Performance enorm langsam Allgemeine Java-Themen 26
F Performance von Reflection vs Statisches Coden Allgemeine Java-Themen 4
M Performance: Java zu C/C++ bei Datenbankanwendung Allgemeine Java-Themen 3
Y unnecessary cast & Performance Allgemeine Java-Themen 29
conan2 Performance von paint() Allgemeine Java-Themen 2
G Performance JDOM - DOM - eigene HashMap (SAX) Allgemeine Java-Themen 2
F Bilder als "Thumbnails" laden - Performance Allgemeine Java-Themen 6
S Java3D Performance optimieren Allgemeine Java-Themen 5
F Wenn ihr Performance wollt nehmt C++ Allgemeine Java-Themen 39
N Performance-Test (Geschwindigkeit von Methoden vergleichen)? Allgemeine Java-Themen 4
S Performance Test mit JMeter Allgemeine Java-Themen 2
T Performance Allgemeine Java-Themen 8
J Anfängerliste für gute Performance? Allgemeine Java-Themen 3
Luma Performance-Problem mit RandomAcces File Allgemeine Java-Themen 4
I Performance bei "String <-> Byte"-Umwandlung Allgemeine Java-Themen 4
I Performance-Probleme bei Schleife Allgemeine Java-Themen 3
C Performance von FOR Schleifen Allgemeine Java-Themen 25
C Performance Vergleich, Java vs. Tcl/Tk Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben