Performance Problem

Status
Nicht offen für weitere Antworten.

scheibl

Aktives Mitglied
Hab ein erhebliches Perfomance Problem. Will Daten aus mehreren Datenbanktabellen lesen. Die Daten werden auch ganz normal ausgelesen, jedoch dauert dies ziemlich lange. So braucht man für einen Datensatz rund 1-2s.

Manchmal geschieht dies aber recht schnell. Was könnte da das Problem sein, dass manchmal ein Datensatz langsam und dann wiederum der gleiche Datensatz schnell gelesen wird?
 

trazzag

Bekanntes Mitglied
hab meine Kristallkugel gerade verlegt...

Um was für Datenbanken handelt es sich?
Was für Daten?
Sind die Zugriffe lokal, oder über's Netzwerk?
usw...
 

scheibl

Aktives Mitglied
Also, es handelt sich um eine Access Datenbank. Die ersten Daten werden schnell gelesen, doch ab dem 40-50 datensatz wird alles extrem langsam. hab wirklich null plan was da sein könnte. Es ist alles lokal gespeichert.
 
T

tuxedo

Gast
Das Problem heisst glaub "Access" ...

Wie groß ist denn deine AccessFile?

- Alex
 

scheibl

Aktives Mitglied
Die DB is ca 30 mb groß. Hier ist mal ein Ausschnitt vom code:

Code:
/*
 * importGegenstand.java
 *
 * Created on 10. Dezember 2007, 17:57
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package imports;

import com.Ostermiller.util.CSVParser;
import tools.DBMetadata;
import tools.Database;
import tools.SQLizable;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import import_pojos.Gegenstand;
import import_pojos.Lehrer;
import tools.DBMetadata;
import tools.Database;

/**
 *
 * @author Andi
 */
public class ImportGegenstand {
    
    private String dateiname = null;
    private CSVParser parser = null;
    private List<Gegenstand> gegenstand = null;
    
    private boolean hasRead = false; // Wurde die read-Funktion bereits aufgerufen?
    
    private int kuerzelpos=5;
    private int langbezpos=6;
    
    
    /** Creates a new instance of importGegenstand */
    public ImportGegenstand(String dateiname) 
    {
        try {
            parser = new CSVParser( new BufferedReader( new FileReader(dateiname)));
        } catch (FileNotFoundException ex) {
            ex.printStackTrace();
        }
        gegenstand = new ArrayList<Gegenstand>();
    }
    
    
    public void readGegenstand() throws IOException
    {
        if( hasRead)
                return;

            String [] line = null;
            List<String> gstring=new ArrayList<String>();
            Lehrer l=null;
            Gegenstand g=null;
            parser.changeDelimiter(';');
            




            while((line = parser.getLine()) != null)
            {
                if(!gstring.contains(line[kuerzelpos]))
                {   gstring.add(line[kuerzelpos]);
                    gstring.add(line[langbezpos]);
                    System.out.println("Hallo");
                    
                }

            }

            //gstring=sort(gstring); 
            //lstring=removeInvalid(lstring);

            for(int i=0; i<gstring.size(); i++)
            {
                g=new Gegenstand(gstring.get(i), gstring.get(++i));
                gegenstand.add(g);        
            }

            for(int i=0; i<gegenstand.size(); i++)
            {
                System.out.println(i + ".Element: " + gegenstand.get(i).getKuerzel());
            }

            hasRead = true; // fertig gelesen

            System.out.println("Import von Gegenstand-Objekten fertig.");

        }
    
         private List<String> sort(List<String> gstring) 
        {
            int min, j;
            String help=null;;
            for(int i=0; i<gstring.size()-1; i++)
            {   min=i;
                for(j=i+1; j<gstring.size(); j++)
                {   if(gstring.get(min).toString().compareTo(gstring.get(j).toString())>0)
                       min=j;
                }
                if(min!=i)
                {	help=gstring.get(min).toString();
                        gstring.set(min, gstring.get(i).toString());
                        gstring.set(i,help); 
                    //System.out.println("Tausche: " + kstring.get(i).toString() + "mit" + kstring.get(min).toString());
                }
            }

            return gstring;
        }
         
        public boolean allToDatabase() {
        Database db = Database.getInstance();

        // Klassen-Tabelle leeren
        db.clearTable( DBMetadata.getTableName( DBMetadata.GEGENSTAND));
        
        // Klassen in die Datenbank schreiben
        for( int i=0; i<gegenstand.size(); i++)
        {
            // Klasse aus der Tabelle holen
            Gegenstand g = gegenstand.get(i);
            
            // Klasse in die Datenbank schreiben (siehe DatabaseTool)
            if( db.insertObject((SQLizable)g) == false)
            {
                System.err.println("Error");
                return false;
            }
        
        }
        
        return true;
    }
    
    
    
}
 

schalentier

Gesperrter Benutzer
Wieviel Speicher gibst du deinem Java Programm?

Versuchs mal so zu starten:
Code:
java -Xmx512m -cp.... imports.MainKlasse

Damit bekommt dein Java 512MB RAM. Laesst du das weg, sinds nur ca 100MB. Sobald die voll sind, faengt dein OS mit Paging auf die Platte an... das KOENNTE ein Problem sein...
 
T

tuxedo

Gast
Du könntest auch mal mit

Code:
System.out.println(System.currentTimeMillis());

versuchen zu schauen WO die "Mehrzeit" auftritt.
 

scheibl

Aktives Mitglied
Ok, danke werd ich mal probiern. Wie lautet dazu der ganze Befehl?
java -Xmx512m -cp.... imports.MainKlasse was gehört anstatt .... hin?
 
T

tuxedo

Gast
Wie wär's mit dem Pfad zu deinen Klassen? Auch "Classpath" oder kurz "cp" genannt ?
 

schalentier

Gesperrter Benutzer
Hmpf... wie startest du bisher dein Programm? Wahrscheinlich mit einer IDE... da sollte es im Dialog zum Programmstart auch "VM Arguments" oder so aehnlich geben. Dort schreibst du rein:
Code:
-Xmx512m
 

Murray

Top Contributor
schalentier hat gesagt.:
Sobald die voll sind, faengt dein OS mit Paging auf die Platte an... das KOENNTE ein Problem sein...
Das stimmt nicht - wenn diese Grenze überschritten wird, dann allokiert die VM keinen Speicher mehr, und es gibt einen OutOfMemorError.

Das Zusichern von zusätzlichem Speicher kann aber durchaus Effekte auf das Laufzeitverhalten haben - wenn man die Obergrenze für den Heap hochsetzt, dann muss die Garbage-Collection (die ja eine Menge Zeit kostet) erst später zuschlagen, läuft dafür aber auch länger. Fine-Tuning in diesem Bereich ist aber alles andere als trivial.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Chris81T Performance Problem durch mehrfaches Starten eines JAVA Prog Allgemeine Java-Themen 8
egrath Performance Problem mit File-I/O Allgemeine Java-Themen 6
G Performance Problem bei der Übertragung Server zum Client Allgemeine Java-Themen 3
Luma Performance-Problem mit RandomAcces File Allgemeine Java-Themen 4
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
M Performance Allgemeine Java-Themen 5
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
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
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
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
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
krgewb Problem mit Umlauten und Eszett bei InputStream Allgemeine Java-Themen 3
Max246Sch Backtracking Problem Box Filler Allgemeine Java-Themen 6
NightVision402 VisualVM Startskript Problem Allgemeine Java-Themen 3
javaBoon86 Email Server Connection Problem Allgemeine Java-Themen 1
F Problem mit PDFBOX Library Allgemeine Java-Themen 1
A Java modul Problem Allgemeine Java-Themen 4
D Read JSON File Problem Allgemeine Java-Themen 9
urmelausdemeis Exception in thread "main" java.lang.Error: Unresolved compilation problem: Allgemeine Java-Themen 7
J Problem mit JasperReports Allgemeine Java-Themen 8
M log4j Problem mit jlink Allgemeine Java-Themen 19
8u3631984 Problem beim Mocken von Record Klassen Allgemeine Java-Themen 4
torresbig Website login Problem - Jsoup, wie bisher, klappt nicht! Allgemeine Java-Themen 31
P Selenium . getText Problem Allgemeine Java-Themen 9
A Jar zu Exe Problem Allgemeine Java-Themen 13
sserio Variablen Liste erstellt und ein Problem mit dem Index Allgemeine Java-Themen 6
S Folgendes Problem bei einem Programm Allgemeine Java-Themen 1
stormyark Problem beim Klassen erstellen Allgemeine Java-Themen 1
A Thread.sleep Problem Allgemeine Java-Themen 2
A Problem bei der Nachbarschafttest Allgemeine Java-Themen 11
Splayfer Problem: no main manifest attribute Allgemeine Java-Themen 3
G javamail Problem beim Empfangen von Nachrichten Allgemeine Java-Themen 3
Splayfer JDA Problem mit MessageCounter Allgemeine Java-Themen 0
Splayfer Problem mit BufferedWriter Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben