dentaku
Anmeldungsdatum: 31. Januar 2005
Beiträge: 3785
|
Nein, das ist kein Scherz! Zuerst war ich bei der ARbeit überrascht, dass bei manchen Server Appliaktionen ein einfacher Austausch von 1.5.0_9 mit der aktuellen 1.6.0 Version Geschwindigkeitssteigerungen bis zu 30% brachten (HotSpot Server VM auf single core Pentium 4 CPUs ohne Hyperthreading, WIndows 2000 SP4). Nun habe ich für mein 64 Bit Ubuntu die 1.6.0 64 Bit Version für Linux installiert und mein Fraktalprogramm (mit der Server HotSpot VM auf AMD 64 Bit X2 3800+ EE dual core) damit getestet: 10 statt 20 Sekunden für ein tiefes Bild mit hoher Iterationstiefe = doppelt so schnell als mit der 1.5.0_08 (Paket sun-java5-jdk aus Synaptic)!!! 😲 😲 😲 Natürlich ist das ein extremes Beispiel, aber inzwischen lese ich immer öfter, dass die 1.6er Version deutliche Performancegewinne versprechen (10-30%). Und wie man sieht, bei entsprechenden Spezialanwendungen noch mehr. Auch Eclipse ist noch deutlich flüssiger geworden. ☺
|
RelaxAlien
Anmeldungsdatum: 9. April 2005
Beiträge: Zähle...
Wohnort: Lüdenscheid
|
das ist doch eine erfreuliche nachricht, muss ich selbst einmal testen obs bei mir auch den performanceschub bringt
|
DrScott
Ehemalige
Anmeldungsdatum: 7. Juli 2005
Beiträge: 6018
Wohnort: Nürnberg
|
Na, mit solchen Äußerungen muß man sehr vorsichtig sein: Bei meinem momentanen Projekt (nur konsole, sehr rechenintensiv, sehr speicherintensiv) beträgt der Geschwindigkeitszuwachs sage und schreibe 0 Prozent. Leider 😉
|
lacarpe
Anmeldungsdatum: 21. Juni 2006
Beiträge: 340
|
@dentaku: Liegt der Geschwindigkeitsgewinn darin begründet, dass 1.6 potentiell schneller als 1.5 ist (oder sein soll), oder darin, dass du die 64-bit-Version anstatt der 32er verwendest, oder an beidem? Wenn die 1.6 in der 64er-Variante so viel schneller wäre, würde ich mir sogar mal ein 64er-Ubuntu aufspielen. Allerdings sagt man doch normalerweise, dass die 64er gegenüber der 32er nur maginale Geschwindigkeitsvorteile bringt. Warum sollte das gerade für Java anders sein? Für nichts würde ich mir den Aufwand nämlich nicht machen wollen. @DrScott: Ich habe auch hoch rechenintensive Prozesse unter Java laufen. Wäre natürlich blöd, wenn gerade für solche Anwendungen kein Geschwindigkeitsvorteil gegenüber der 1.5 erkennbar wäre. Herzlicher Gruß, lacarpe
|
cgogolin
Anmeldungsdatum: 4. Juli 2006
Beiträge: 169
|
ich bin zwar kein Experte auf dem Gebiet, aber die 64 Bit Version dürfte nur dann wirklich schneller sein, wenn man auch viel mit 64 Bit'igen Datentypen hantiert, also Doubles und so. ich glaube nicht das eine Integer Addition auf 64 Bit Basis schnelle ist als mit 32. korrigiert mich bitte wenn ich mich irre.
|
DrScott
Ehemalige
Anmeldungsdatum: 7. Juli 2005
Beiträge: 6018
Wohnort: Nürnberg
|
cgogolin hat geschrieben: die 64 Bit Version dürfte nur dann wirklich schneller sein, wenn man auch viel mit 64 Bit'igen Datentypen hantiert, also Doubles und so.
Jau, und genau darin könnte dentakus Effekt liegen...
|
lacarpe
Anmeldungsdatum: 21. Juni 2006
Beiträge: 340
|
DrScott hat geschrieben: cgogolin hat geschrieben: die 64 Bit Version dürfte nur dann wirklich schneller sein, wenn man auch viel mit 64 Bit'igen Datentypen hantiert, also Doubles und so.
Jau, und genau darin könnte dentakus Effekt liegen...
Aha, das ist ja interessant. Das müsste ich dann ja direkt mal ausprobieren, denn meine Daten sind zu nicht unerheblichem Teil im double-Format.
|
lacarpe
Anmeldungsdatum: 21. Juni 2006
Beiträge: 340
|
Also ich habe es jetzt mal getestet: 1.6 bringt gegenüber 1.5 in der 32er Version bei mir einen Performancezuwachs von knapp 10%. Gruß, lacarpe
|
DrScott
Ehemalige
Anmeldungsdatum: 7. Juli 2005
Beiträge: 6018
Wohnort: Nürnberg
|
lacarpe hat geschrieben: Also ich habe es jetzt mal getestet: 1.6 bringt gegenüber 1.5 in der 32er Version bei mir einen Performancezuwachs von knapp 10%.
Also beide 32bit?
|
lacarpe
Anmeldungsdatum: 21. Juni 2006
Beiträge: 340
|
Ja, so ist es gemeint: beide 32 bit.
|
dentaku
(Themenstarter)
Anmeldungsdatum: 31. Januar 2005
Beiträge: 3785
|
Nein, mein "100% Test" war jeweils auf dem gleichen 64 Bit System. Ich switche einfach zwischen der 1.5.0_08 und 1.6.0 auf meinem 64 Bit Ubuntu hin- und her, und starte das Fraktalprogramm genau gleich. Wie gesagt: dass ist wohl ein optimaler Sonderfall, denn das Programm macht ja schliesslich kaum was anderes als mathematisch Formeln (mit doubles) zu rechnen. Ich bin aber dabei eine Version mit BigDecimal zu machen (um tiefere Zooms zu ermöglichen). Wie ich aber gelesen habe, wurde bei BigDecimal auch in Sachen Performance geschraubt. Im Geschäft habe ich auf Windows 2000 SP4 (also 32 Bit Windows Versionen von JDK 1.5.0_09 und 1.6.0) auch sehr unterschiedliche Ergebnisse erzielt - je nach Applikation. Manche haben nur 5-10% Zuwachs, ander wieder 20 bis sogar 30% (auch recht rechenintensive Threads die statt über 4 nun unter 3 Minuten brauchen) - auch hier habe ich doppelt getestet, also umgeschaltet auf 1.6.0 dann wieder zurück auf 1.5.0 und wieder zurück auf 1.6.0; mehrere Tests (alleine schon um den HotSpot aufzuwärmen) und der Performancezuwachs ist stets ziemlich gleich. Bei uns also ca. 5-30%. Die 100% bei meinem Fraktalprogramm kann ich auch jedesmal bestätigen. Das Urbild hat einen Performancegewinn von ca 20%. Doch rechne ich ein tiefes Bild, um genau zu sein -0.5622026215230372, 0.6428171490727752, 2.220446049250313E-15 mit 300 Iterationen, so benötigt das Programm mit 1.6 nur 10 Sekunden im Vergleich zu 20 Sekunden mit Java 1.5. Ohne irgendwelche sonstigen Änderungen, einfach nur den Pfad zur java Binary ausgetauscht. 8)
|
lacarpe
Anmeldungsdatum: 21. Juni 2006
Beiträge: 340
|
@dentaku: Kannst du auch eine Aussage darüber machen, ob z.B. 1.5 auf 64bit um x% schneller ist als 1.5 auf 32bit? (Bzw. für 1.6?)
|
dentaku
(Themenstarter)
Anmeldungsdatum: 31. Januar 2005
Beiträge: 3785
|
Ich könnte höchstens das Programm auf 32 Bit Windows auf dem gleichen Rechner laufen lassen. Das wäre aber ein Vergleich zwischen 32 Bit Windows und 64 Bit Linux - was Dir wohl wenig hilft, oder? Oder auf 32 Bit Windows den Unterschied von 1.5 zu 1.6 ... hört sich interessant an, werde ich gleich mal ausprobieren ...
|
lacarpe
Anmeldungsdatum: 21. Juni 2006
Beiträge: 340
|
Vermutlich bringt das nicht viel. Da müsste man halt wissen, ob die VMs für Win-32 und für Linux-32 gleich performant sind. Keine Ahnung.
|
dentaku
(Themenstarter)
Anmeldungsdatum: 31. Januar 2005
Beiträge: 3785
|
Wohl nicht, denn zu meiner Enttäuschung muss ich feststellen, dass die Windows Version von Java (32 Bit) sogar schneller ist als die Linux 64 Bit Version (jeweils dritter Durchlauf gemessen; Ergebnisse in Sekunden): Windows 2000, 32 Bit VMs: 1. Client VM: 18,609 (1.5) ⇒ 9,625 (1.6) 2. Server VM: 15,125 (1.5) ⇒ 8,64 (1.6) Ubuntu 6.10, 64 Bit VMs: 3. Server VM; 19,522 (1.5) ⇒ 9,873 (1.6) d.h. die Windows 32 Bit client VM ist sogar schneller oder gleich schnell wie die 64 Bit server VM auf Linux ... ☹ Immerhin hat mit Java 1.6 die Linux server VM schon nahe zur Windows server VM aufgeschlossen (auf 64 Bit gibt's keine client VM für Linux).
|