PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Geschwindigkeit Java unter Linux



Argoran
22.04.2007, 17:30
Hallo,

habe ein Problem mit einer Java-Anwendung unter Linux:


double erg = 0;
int b = 20;
long i;
double z;
long time1 = System.currentTimeMillis();
for (i = 1; (z = erg + 1.0/i) < b; i++)
{
erg = z;
}
long time2 = System.currentTimeMillis();
System.out.println(erg);
System.out.println(i);
System.out.println("Rechenzeit: " + (time2 - time1) + " ms");


Diese Zeilen brauchen unter Linux ca. 45 Sekunden und unter Windows gerade mal 2. Unter Linux hab ich zwar noch die 1.5 vm drauf, aber auch bei WIn braucht es gerade mal ein paar ms länger mit vm 1.5. Hat jemand eine Idee was da los ist?

thx

Argo

dmaphy
22.04.2007, 18:45
Also ich hab einen AMD Duron, 1,8GHz, allerdings sagt meine Java-Version das hier:



java version "1.6.0"
Java(TM) SE Runtime Environment (build 1.6.0-b105)
Java HotSpot(TM) Client VM (build 1.6.0-b105, mixed mode, sharing)


Wie dem auch sei, das hier ist die Ausgabe deines niedlichen Programms:


19.999999997947167
272400600
Rechenzeit: 15517 ms
// bzw. bei einem zweiten Durchlauf
19.999999997947167
272400600
Rechenzeit: 14522 ms


Also ca. 15 Sekunden. (Jeweils getestet auf Linux, FC6). Warum das allerdings auf Windows schneller ist kann ich dir nicht sagen. Oo

Uschi
22.04.2007, 20:59
Nur mal so als Tip, wenn du so einfache Programme hast wie das angegebene, dann kannst du auch auf den gnu java compiler zurückgreifen.

Mit GCJ kannst du auch binaries erstellen, die dann dementsprechend auch schneller ausgeführt werden.

Ein problem ist eben dass GCJ die SUN libraries nicht alle implementiert hat aber solange du so relativ simple programme wie das angegebene hast, sollte das kein problem sein.

hengs
25.04.2007, 15:09
Ich habe etwas andere Ergebnisse:

Testsystem: Debian Etch Amd64

Bytecode:

gij (GNU libgcj) version 4.1.2: ~22s
sun java "1.5.0_10": ~ 2,81s

Binary:

gcj 4.1.2: ~3.86s

Vergleich zu C/C++


gcc 4.1.2: ~3.87s
g++ (gcc 4.1.2): ~ 3.98s

Stollentroll
25.04.2007, 16:07
Ich habe hier ca. eine Sekunde unterschied feststellen können, richtig vergleichbar ist es leider trotzdem nicht, da ich unter XP kein Java 5 mehr finden konnte.
ca. 9 Sekunden unter Gentoo mit Java 5 SDK
ca. 8 Sekunden unter XP mit Java 6 SDK

Das ganze mit einem AMD64 3200+