Methoden Java Applikation Die System Auslastung optimieren ?

DanaL

Mitglied
Hallo

Kurz zum Programm:

Es ist mein erstes Programm und deshalb nicht am besten und Effektivsten weg programmiert worden aber es funktioniert und erfüllt seinen Zweck. Das Programm diehnt als Design Verwaltung. Es verwaltet ca 3000 Designs. Es kann jeweils nach Gruppe sortiert werden für die jeweilige Gruppe werden dann in einer scrollPane Container generiert. Dort wird jeweils die Design spezifische Nummer angezeigt ein kleines Vorschaubild mit ca 20-30 kb und noch einem Design Namen. Diese Designs können dan noch etwas genauer gefiltert werden und dan ausgedruckt werden oder via e-mail versendet werden.

Im Anhang noch ein paar Screenshots der Applikation damit man sich darunter ungefähr etwas vorstellen kann.
Das Programm wurde mithilfe von Xdev programmiert.

01.png So schaut das Programm aus nach 5sec.
02.png Die Suche und generierung wurde abgeschlossen aber die Bilder werden noch nicht angezeigt.



Problem #1:

Es werden in der scrollPane nur ca 200 Designs angezeigt, um weitere zu sehen muss umgeblättert werden. Sprich die scrollPane wird einmal geleert und dan wieder mit den Designs gefüllt. Das Problem ist das das Laden der Bilder zu lange dauert. Die Sql Abfrage und die generierung der Container in denen die Designs angezeigt werden dauert ca 500ms. Aber bis die Bilder geladen sind dauert es ca 5 sec. Die Bilder liegen auf einem externen Server und werden über das Netzwerk geladen, es besteht eine Standleitung und an der Internet Geschwindigkeit kann es nicht liegen.

Wie kann ich am schnellsten wege die Bilder in das Programm laden und anzeigen damit das in ca 1-2 sec vollständig geladen ist ?



Problem #2:

Das Programm braucht zu viel Systemleistung. Wenn ich den Button betätige der die SQL Abfrage, die generierung der Container und das Laden der Bilder startet steigt die Systemauslastung kurzzeitig auf 90-100%. Für einen normalen PC nicht unbedingt ein Problem aber das Programm läuft auf einem TerminalServer und dort ist es ein großes Problem wenn die System Auslastung steigt. Wie erwähnt ich habe erst gestartet mit dem Programmieren und kenne mich noch nicht gut aus weshalb ich auch alles in einem einzigen Thread ausführe, sprich im main Thread in dem auch das Fenster selbst generiert wird.

Wie kann ich es beseitigen das die Systemleistung bei einer Suche nur mehr wenig ansteigt sprich unter 10% ? Würde es helfen wenn ich das Laden der Bilder und die SQL Abfrage in einen eigenen Thread geben würde ? Oder wie kann ich dies am besten lösen ?


Für weitere Fragen bitte einfach Fragen.

Lg Daniel
 

Anhänge

  • 01.PNG
    01.PNG
    459,6 KB · Aufrufe: 34
  • 02.PNG
    02.PNG
    48,2 KB · Aufrufe: 46

stg

Top Contributor
Zu 1:
200 mal 30kB sind aber auch schon 6MB. Wenig ist das auch nicht, was du da abholst und gleichzeitig zeichnen lässt. Hilft es schon deutlich, wenn du einfach die Anzahl von sagen wir 200 auf 50 oder so reduzierst?! Alternativ musst du aber natürlich auch nicht alles gleichzeitig zeichnen (man sieht ja eh nicht alles auf einmal), sondern kannst auch erst, wenn gescrollt wird, die erforderlichen Grafiken nachladen.

Zu 2:
Das Programm schnappt sich (zu Recht) so viel Rechenleistung, wie es bekommen kann, um die geforderten Aufgaben so schnell wie möglich zu erledigen. Wenn die maximale Rechenleistung für das Programm begrenzt werden soll, so ist das die Aufgabe des OS, nicht aber die des Programms selbst!
 

JStein52

Top Contributor
Zur Frage mit den mehreren Threads würde ich mal sagen das hilft wahrscheinlich nichts wenn du nicht an der gesamten Logik was änderst. Wenn du das lässt wie es ist aber nur in verschiedenen Threads arbeitest wird ja trotzdem die Leistung des Systems gebraucht. Sie wird evtl. über mehrere CPU'n verteilt, ändert aber nix daran dass dein Terminalserver kurzfristig ein bisschen in die Knie geht. Wie du deine Anwendung selbst optimieren könntest ist bei der kurzen Beschreibung schwer zu sagen. Ich würde mal über irgendeine Art von Cache-Mechanismus nachdenken. Vielleicht ist es machbar nicht alle Grafik-Objekte beim neuladen zu zerstören und wieder neu aufzubauen ? Vielleicht wäre es auch eine Lösung das Laden zeitlich etwas zu "strecken". Dann würde es zwar länger dauern aber den Terminalserver nicht so arg in die Knie zwingen ?
 

Thallius

Top Contributor
Das initiale Laden wirst du nicht groß beschleunigen können. Ich würde aber, wie bereits erwähnt, de Bilder über einen Cache laufen lassen. Damit würde zumindest beim zurückblättern das Neuladen entfallen und die vorherige Seite wäre direkt wieder verfügbar.
Noch effektiver ist es natürlich das Laden der bilder in einen backgroud-Thread zu stecken und zunächst ein Platzhalter-Bild anzuzeigen. Der hintergrund Thread läd dann die Bilder und ersetzt die Platzhalter. Das ganze zusammen mit einem Cahce der auch schon Bilder vorlädt wäre optimal. Aber für einen Programmieranfänger ist das schon sehr kompliziert.

Gruß

Claus
 

JStein52

Top Contributor
Und den Hintergrundthread dann schön langsam laufen lassen damit die Systemleistung reduziert wird (dafür dauert es halt länger !), sonst hast du das gleiche Terminalserver-Problem wieder ! Und möglichst wenig deiner Grafik-Objekte (ist das Swing ?) beim scrollen zerstören und mit new wieder neu aufbauen. Du möchtest ja hauptsächlich die Systemleistung reduzieren !!
 

DanaL

Mitglied
Ja ok das hat mir sehr geholfen.
Ich werde es Ausprobieren aber bin mir sicher dass es das ganze etwas verbessern wird.

Danke für die Hilfe
 

JStein52

Top Contributor
Ja, kann man sicher machen. Aber Achtung: er will ja zunächst mal dass er den Terminalserver nicht in die Knie zwingt. Die Zeit ist da zweitrangig, aber sicher auch im Auge zu behalten.
Das sind zwei paar Dinge: die benötigte Zeit und die CPU-Last die man auf so einem Terminalserver produziert.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
O Leerzeichen und Umlaute im Pfad einer Java Applikation machen Probleme Allgemeine Java-Themen 13
O Java-Applikation tut in Netbeans, als JAR nicht, wegen Pfadangaben einer benötigten Datei Allgemeine Java-Themen 8
L Java Applikation Web Anbindung Allgemeine Java-Themen 2
L Übergabe an eine eher einfache Java- Applikation wegen Kündigung Allgemeine Java-Themen 1
B Applikation ohne (direkt)Java installiert zu haben auszuführen Allgemeine Java-Themen 8
P Java Applikation mit Webinterface Allgemeine Java-Themen 1
J java-applikation-1.jar soll java-applikation-2 aufrufen.jar Allgemeine Java-Themen 5
S Java Applikation zu autostart hinzufügen Allgemeine Java-Themen 7
S Perfomance Problem mit Java Applikation Allgemeine Java-Themen 4
MrGe Java-Applikation und OpenOffice/UNO Allgemeine Java-Themen 2
F Parameter für Java Applikation per xml ins Meta-inf speichern? Allgemeine Java-Themen 3
C Java Applikation Benutzerkontrolle Allgemeine Java-Themen 3
S Java Webstart Applikation in den Autostart? Allgemeine Java-Themen 3
X Aus Java Applikation externes Programm starten Allgemeine Java-Themen 3
O Applikation über java steuern Allgemeine Java-Themen 11
M Beenden einer externen Java-Applikation Allgemeine Java-Themen 11
H Php Script aus Java Applikation starten Allgemeine Java-Themen 2
B Browser link aus Java-Applikation öffnen Allgemeine Java-Themen 2
A Setup von einer Java-Applikation starten Allgemeine Java-Themen 4
B Java Applikation incl. dll unter Linux ausführen? Allgemeine Java-Themen 11
mabu MediaCenter Applikation in Java realistisch oder nicht? Allgemeine Java-Themen 11
E NT-Anmeldung in Java Client-Applikation nutzen. JAAS ? Allgemeine Java-Themen 5
D Startverhalten Java-Applikation Allgemeine Java-Themen 7
A Java-Applikation auf einem anderen Rechner starten Allgemeine Java-Themen 17
D Plattformunabhängiges ausführbare Java-Applikation ohne jar Allgemeine Java-Themen 5
G überpüfen ob bereits instanz von java applikation läuft Allgemeine Java-Themen 4
L Ressourcen Java Applikation Allgemeine Java-Themen 4
D Name der Java-Applikation Allgemeine Java-Themen 2
G Java Applikation stürzt ab :!: Allgemeine Java-Themen 5
M Java Applikation Slideshow Allgemeine Java-Themen 13
C Java Applikation - Schrift . (formatieren, effekte) Allgemeine Java-Themen 4
W Kleines Applet in Standard Java Applikation umwandeln Allgemeine Java-Themen 3
G idee für java applikation Allgemeine Java-Themen 3
G eigene uhrzeit in einer java applikation führen Allgemeine Java-Themen 19
thE_29 Java Applikation ohne grafische Oberfläche Allgemeine Java-Themen 24
G Java Applikation von einem Browser steuern Allgemeine Java-Themen 8
L Java Applikation über Netzwerk starten Allgemeine Java-Themen 8
X Applikation Java Web Start fähig machen Allgemeine Java-Themen 4
OnDemand Java Deployment Vaadin Allgemeine Java-Themen 2
D Hat Java eine Library um JavaScript auszuwerten? Allgemeine Java-Themen 2
Zrebna Wieso sind eigentlich JUnit-Tests in src/test/java platziert - nur Konvention? Allgemeine Java-Themen 7
N LlaMA, KI, java-llama.cpp Allgemeine Java-Themen 39
V Java-Codierungsherausforderung: Navigieren durch die Macken der Datumsmanipulation Allgemeine Java-Themen 2
E Output Fehler (Java-Programm Kuchen) Allgemeine Java-Themen 11
M java: unexpected type Allgemeine Java-Themen 2
harrytut Java Input/Output Tests Junit Allgemeine Java-Themen 3
B Java Discord bot auf ein Root Server? Allgemeine Java-Themen 1
BetziTheRealOne Java PKIX path building failed as non Admin Allgemeine Java-Themen 15
D Linux, Java-Version wird nicht erkannt bzw. welche Einstellung fehlt noch? Allgemeine Java-Themen 19
KonradN Java 21 Release Allgemeine Java-Themen 5
V Umgang mit fehlenden Daten in einer Java-Datenanalyseanwendung Allgemeine Java-Themen 5
P Fehler: Hauptklasse Main konnte nicht gefunden oder geladen werden Ursache: java.lang.ClassNotFoundException: Main Allgemeine Java-Themen 24
K Java Anwendung machen Anleitung Allgemeine Java-Themen 5
G java.io.listFiles() Allgemeine Java-Themen 3
8u3631984 Frage zu Java Streams min / max Allgemeine Java-Themen 17
S Java Programm lässt sich vom USB-Stick starten, aber nicht von HDD Allgemeine Java-Themen 16
K Java-Projekt Allgemeine Java-Themen 11
K Java-Projekt Allgemeine Java-Themen 0
ruutaiokwu Welcher Browser unterstützt heutzutage noch Java Applets? Allgemeine Java-Themen 5
Jose05 Java-Klasse im extra cmd-Fenster ausführen Allgemeine Java-Themen 3
rode45e Java Threads Allgemeine Java-Themen 4
G java.io.listFiles() Allgemeine Java-Themen 2
N Java Dynamic Proxy Allgemeine Java-Themen 3
N Leichte Java Gegner Ki Allgemeine Java-Themen 10
A Java modul Problem Allgemeine Java-Themen 4
Thomasneuling Java Jar datei erstellen, von Projekt, dass auch Javafx Dateien, FXML Dateien und CSS Dateien, sowie Bilder enthält? Allgemeine Java-Themen 14
V Funktionale Schnittstelle in Java Allgemeine Java-Themen 3
OnDemand Java String in Hashmap als Key NULL Allgemeine Java-Themen 27
urmelausdemeis Exception in thread "main" java.lang.Error: Unresolved compilation problem: Allgemeine Java-Themen 7
berserkerdq2 Wenn ich bei Intelij javafx mit maven importieren will, muss ich das in die pom.xml reintun, aber warum noch in module-info.java? Allgemeine Java-Themen 3
KonradN Java 20 am 21. März Allgemeine Java-Themen 1
O Java Website Stock Bot Allgemeine Java-Themen 3
J Front-/Backend in Java Allgemeine Java-Themen 14
doopexxx JAVA Google Webcrawler Allgemeine Java-Themen 1
J JavaScript innerhalb eines Java Projekts ausführen Allgemeine Java-Themen 2
A Java Programm erstellen hilfe Allgemeine Java-Themen 10
G java.lang.NoClassDefFoundError: org/aspectj/lang/Signature Allgemeine Java-Themen 2
lalex1491 Java Aktienkurse nachfragen Allgemeine Java-Themen 4
J Class to link Java Allgemeine Java-Themen 4
V Wie funktioniert das Schlüsselwort "final" von Java? Allgemeine Java-Themen 19
mrStudent Inferenz JAVA Allgemeine Java-Themen 6
U URI Rechner (Java Script) Allgemeine Java-Themen 7
TheSkyRider Java Geburtsdatum Textfeld Allgemeine Java-Themen 7
mihe7 Java 19 JavaDocs: Browserintegration Allgemeine Java-Themen 0
Encera Gleichzeitiges Ausführen und verbinden von 2 Java-Klassen über die Eingabeaufforderung und Eclipse Allgemeine Java-Themen 21
H Java Rechner Programmierung der Mathematik Allgemeine Java-Themen 33
Lennox Schinkel Java Kara Auf einen Java Host laufen lassen Allgemeine Java-Themen 17
C Fußnoten von DocX mit Java Allgemeine Java-Themen 2
C Fußnoten in DocX mit Java Allgemeine Java-Themen 1
M Aussagenlogik in Java Programmieren Allgemeine Java-Themen 22
B Per Java Word Dokument schreiben? Allgemeine Java-Themen 8
krgewb Java-Bibliothek für ONVIF Allgemeine Java-Themen 1
KonradN Oracle übergibt (Java Teile der) GraalVM Community Edition an OpenJDK Community Allgemeine Java-Themen 2
Momo16 Brauche Hilfe - Java Projekt kann nicht erstellt werden Allgemeine Java-Themen 12
B Java mit command line und jars benutzen? Allgemeine Java-Themen 18
M Java Überprüfen ob .exe-Datei bereits ausgeführt wird Allgemeine Java-Themen 2
B HTTP Allgemeine Fragen über Suchmaschine nutzen mit Java Allgemeine Java-Themen 20
Mick P. F. Wie kriege ich die Fehlermeldung "java: symbol lookup error: ..." weg? Allgemeine Java-Themen 11
K Nachhilfe Java Allgemeine Java-Themen 11
KonradN Java 19 Allgemeine Java-Themen 11

Ähnliche Java Themen

Neue Themen


Oben