-
Performance einer Java-Anwendung
Schönen guten Morgen zusammen,
Ich habe mal die Verlaufszeit meiner Anwendung gemessen die auf die Datenbank zugreift und Werte ausließt und musste leider feststellen das die Anwendung auf der iSeries ca. 30mal Länger braucht wie auf dem PC. Welche Maßnahmen können hier angewandt werden?
Verlaufszeit auf der iSeries: 38234 Millisek
Verlaufszeit auf dem PC: 1349 Millisek
-
... der Start einer JVM ist auf einer AS/400 quälend langsam und danach geht es halt mit der Power des Prozessors weiter. =>
- nur neueste Hardware im oberen Prozessor Bereich bringt "ordentliche" Leistung
- Java nur in Server Prozessen verwenden (eine vorgestartete JVM bedient viele Clients)
- hierfür kann man auch meine OpenSource AppServer4RPG einsetzen
- Finger weg von RPG Java Mix (das ist nciht nur langsam, sondern auch instabil)
D*B
-
ich glaub nicht das es an der Performance vom Prozessor oder der JVM liegt.
Was richtig Zeit kosten kann, ist z.B. wenn man AS400 Verbindung nicht mit *CURRENT anmeldet sondern einen festen User eingibt. Das kann auch der gleich User sein unter dem der JOB läuft und schon kann man für ein as400.validateSignon(); doppelt so lange warten.
Nachfolgend das Beispiel:
Code:
import java.util.Date;
import com.ibm.as400.access.AS400;
public class AS400ConnectionTest {
public static void main(String[] args) {
Date date = new Date();
long start = date.getTime();
System.out.println("Start: " + date);
if (args.length != 3){
System.out.println("3 Parameter werden benötigt");
System.out.println("server user passwort");
System.out.println("localhost *CURRENT *CURRENT");
System.exit(1);
}
System.out.println("Anmelden mit User: " + args[1]);
try{
AS400 as400 = new AS400(args[0], args[1], args[2]);
as400.validateSignon();
as400.disconnectAllServices();
}catch(Exception e){
e.printStackTrace();
}
date = new Date();
System.out.println("Ende: " + date);
System.out.println("Benötigte Zeit in Sekunden: " + ((float)(date.getTime() - start) / 1000));
System.exit(0);
}
}
Aufruf: java -cp jt400.jar AS400ConnectionTest 192.168.178.222 myuser mypass
(AS400ConnectionTest.class habe ich in die jt400.jar kopiert)
Auf den PC: Benötigte Zeit in Sekunden: 0
Auf der AS400: Benötigte Zeit in Sekunden: 33
Aufruf: java -cp jt400.jar AS400ConnectionTest localhost *CURRENT *CURRENT
Auf der AS400: Benötigte Zeit in Sekunden: 17
Das ganze liegt an der Zeile as400.validateSignon(); . Ohne diese ist das Programm auch schnell durch.
Aber auch wenn man das as400.validateSignon(); ersetzt z.B. durch
Code:
IFSJavaFile file = new IFSJavaFile(as400, "/TMP/test.txt");
IFSFileOutputStream out = new IFSFileOutputStream(file);
out.write("das ist ein test".getBytes());
out.close();
hat man erstmal lange Zeit zu warten. Da aber auch auf der PC Seite, da der erste IFS-Zugriff lange dauert.
Gruß
TR
-
... ist ja hübsch, aber nicht das Thema (mal abgesehen davon, dass man weder ein AS400 object, noch validateSignon() braucht).
Es geht um die signifikant längere Laufzeit (Faktor 30) eines kleinen Java Programmes und genau die liegt an drei Faktoren:
- längeres Startup der JVM (Sekunden versus Bruchteile davon)
- längere Ladezeiten für komplexe Objekte (Sekunden versus Bruchteile davon)
- langsamere Ausführung (je nach Prozessor)
Das addiert sich dahin, dass bei relativ kleinen Programmen (ein paar Sätze aus einer Datenbank lesen, ein PDF generieren, ein Excel erzeugen) ein Faktor von 30 nicht ungewöhnlich ist.
D*B
-
Hinzu kommt der JIT-Compiler, der bei jedem Aufruf nun neu kompiliert.
Vor V6 konnte man per CHGJVAPGM bereits ein MI-Template erstellen lassen.
Außerdem muss man berücksichtigen, auf der AS/400 bist du nie alleine!
Auf dem PC (selbst auf einem Server) hast du in 99,99% aller Fälle alle Ressourcen für dich, also auch die CPU.
Zusätzlich (zumindest auf meinem PC) gibt es im Hintergrund von der Oracle-JVM bereits einen "JAVA-Vorstart-Job", der das Initialisieren einer JVM beschleunigt.
Dies spricht wieder für Dieters Ansatz eines Hintergrundjobs, der halt JAVA-Dienste bereits vorgestartet bereit hält.
Similar Threads
-
By TR1 in forum NEWSboard Java
Antworten: 1
Letzter Beitrag: 02-11-13, 14:02
-
By chris in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 17-10-02, 13:32
-
By peter-venkman in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 09-07-02, 08:55
-
By Case Consult in forum Archiv NEWSboard Events
Antworten: 0
Letzter Beitrag: 18-03-02, 11:41
-
By lrmeyer in forum IBM i Hauptforum
Antworten: 10
Letzter Beitrag: 05-03-02, 07:38
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks