Ausführungsgeschwindigkeit auf PIII = PIV !?

Hallo,

kann mir vielleicht jemand erklären, warum ein und das selbe Javaprogramm auf einem PIII 0,55GHz genausolange dauert wie auf einem PIV 2,5GH?
Auf beiden Rechnern wird das selbe JDK verwendet und die class-Files sind ebenfalls identisch.

Vielen Dank

Ben

Moin

Auf beiden Rechnern wird das selbe JDK verwendet und die
class-Files sind ebenfalls identisch.

welche JVM ?
welche JVM-start-up optionen ?
wieviel RAM ?

cu

welche JVM ?

jdk1.3.1

welche JVM-start-up optionen ?

Die einzige, die relevant ist: -Xmx128m

wieviel RAM ?

jeweils 512 MB

Der PIII läuft unter Win98, der PIV mit WinXP pro

Moin

welche JVM ?

jdk1.3.1

von sun ?

welche JVM-start-up optionen ?

Die einzige, die relevant ist: -Xmx128m

Schnapp er sich die sofort oder incremtel ?

Der PIII läuft unter Win98, der PIV mit WinXP pro

Also:

  1. Der PIV 2,5 ist nicht 5x schneller als der PIII 550. Ich würd bei Anwendungen die nur wenig IO haben auf 2-3x tippen. (Bei reinen CPU und Speicher-Benchmarks wird natürlich mehr rauskommen, die haben aber nix mit der tatsächlichen Systemgeschwindigkeit zu tun/ Desdo mehr I/O, desdo weniger Unterschied)

  2. Die 1.3.x von sun ist ziemlich anfällig für System-operationen, also Arbeiten mit Platte und Ausgaben. In WinXP schlagen die viel stärker zu als in Win32 (9x + ME).

  3. Unter winXP kann man die 1.3.x im DOS-emu starten, ohne es zu wollen. In dem Fall müsste sie allerdings noch langsamer sein als jeder PII.

  4. wieviele „sleep()“-Befehle sind in dem Prog verbaut ?

  5. Läuft der PIV sauber, sprich mit einigermassen optimalen Einstellungen ?

  6. WinXP hat eine andere Speicherverwaltung mit anderem Rechte-check. Der kostet auch Zeit, besonders bei Programmen die wie die JVM permanent in malloc rumfummeln.

  7. was läuft im Hintergrund ? Virenscanner ?

cu

kann mir vielleicht jemand erklären, warum ein und das selbe
Javaprogramm auf einem PIII 0,55GHz genausolange dauert wie
auf einem PIV 2,5GH?
Auf beiden Rechnern wird das selbe JDK verwendet und die
class-Files sind ebenfalls identisch.

Es wäre noch wichtig zu wissen, was das für ein java Programm ist. Bei reinen Datenoperationen (z.b. Sortieralgorithmen) sollte schon ein Unteschied zu sehen sein, bei Programmen die viel Zeit mit Warten auf I/O etc. verbringen nicht.

Grüße
Bruno

Nun ja, ich würde es als ‚number cruncher‘ beschreiben, dass auch
eine kleine Log-Datei erzeugt (wenige KB). Die Rechenpower des
Rechners müsste also voll zum Tragen kommen.

Ben

Hi,

das JDK ist von Sun.

Der belegte Speicher steigt am Anfang leicht an und pendelt sich
dann bei so ca. 30 MB ein, die 128 MB sind also überdimensioniert.

  1. Der PIV 2,5 ist nicht 5x schneller als der PIII 550. Ich
    würd bei Anwendungen die nur wenig IO haben auf 2-3x tippen.
    (Bei reinen CPU und Speicher-Benchmarks wird natürlich mehr
    rauskommen, die haben aber nix mit der tatsächlichen
    Systemgeschwindigkeit zu tun/ Desdo mehr I/O, desdo weniger
    Unterschied)

Wie gesagt, ist das Programm ein ‚number cruncher‘, d.h. wenig IO.

  1. wieviele „sleep()“-Befehle sind in dem Prog verbaut ?

Es gibt kein sleep(), allerdings sind einige Sachen synchronized.

  1. Läuft der PIV sauber, sprich mit einigermassen optimalen
    Einstellungen ?

Ich denke schon, bin allerdings nicht so versiehrt darin, die
Optimalität eines WinXP-Systems zu messen.
Aber selbst wenn es sub-optimal ist, darf er doch nicht soooo
grotten-langsam sein.

  1. was läuft im Hintergrund ? Virenscanner ?

Ein Virenscanner mit Sicherheit, aber sonst fast nix weiter, kann
ich jetzt allerdings nicht genau sagen.

Wie ist denn die Java-Geschwindigkeit eigentlich bei Win2000-Systemen?

Ben

Moin

das JDK ist von Sun.

gut. Lad das 1.4. runter und benutz „-server“ beim startup. Das bringt einen Speedup von 2-6. Bei cruncheren eher 6.

Oder nim den 1.5 beta. Denk daran, es ist eine _beta_. (Ist aber relativ schnell für eine beta)

  1. wieviele „sleep()“-Befehle sind in dem Prog verbaut ?

Es gibt kein sleep(), allerdings sind einige Sachen
synchronized.

synchronizierst du da Netzwerk-zugriffe ? (sprich: ist es ein verteilter number-cruncher ?)

Aber selbst wenn es sub-optimal ist, darf er doch nicht soooo
grotten-langsam sein.

Schalt den L2-Cache aus: voilà ein 486DX50. Die Einstellungen im BIOS und im Control-Panel sind wichtig.

  1. was läuft im Hintergrund ? Virenscanner ?

Ein Virenscanner mit Sicherheit, aber sonst fast nix weiter,
kann
ich jetzt allerdings nicht genau sagen.

Der Virenscanner nimmt sich nach jedem malloc (Speichergrössenänderung) die JVM neu vor. Stell die Minimale Speichergrösse auf 35 MB ein, oder noch besser : schalt ihn AUS.

Wie ist denn die Java-Geschwindigkeit eigentlich bei
Win2000-Systemen?

± XP-niveau. Es geht hautsächlich um den NT-kern, den haben beide.

cu

Hi Ben,

kleine Frage nebenbei: Ist die Systemlast bei 100% ? Wenn ja: Ist der P4 gut gekühlt? Wenn nicht, dann drosselt der sich runter sobald er zu warm wird, das könnte eine Erklärung sein.
Nur so ein Geadnke.

Gruss,

Herb

Hi,

gut. Lad das 1.4. runter …

Ich bin leider an 1.3.1 gebunden, weil das Programm nur mit dieser
Version zuverlässig funktioniert.

und benutz „-server“ beim startup.
Das bringt einen Speedup von 2-6. Bei cruncheren eher 6.

Ich habe heute Nacht entspr. Testläufe gemacht, und das Resultat ist leider
sehr ernüchternd. Die Option ‚-server‘ bringt gar nix!
Es ist sogar eine Verlangsamung um bis zu 30% entstanden. :frowning:

synchronisierst du da Netzwerk-zugriffe ?

Nein.

Stell die Minimale Speichergrösse auf 35 MB ein, …

Hab ich gemacht, es bringt allerdings auch nur wenige Prozente.

Tja, trotzdem vielen Dank für die Vorschläge.

Ben

kann mir vielleicht jemand erklären, warum ein und das selbe
Javaprogramm auf einem PIII 0,55GHz genausolange dauert wie
auf einem PIV 2,5GH?
Auf beiden Rechnern wird das selbe JDK verwendet und die
class-Files sind ebenfalls identisch.

wenn es dich beruhigt, ich hab das problem auch. nur ich habe 2 optimal konfigurierte Systeme(550 und 2100 MHz) mit sehr guten (leider auch teuren) Komponenten (beide W2k).

sag mal warum kannst du die 1.4er nicht installiern? bei mir hats einen Leistungszuwachs von 10 % auf dem 550er und über 20 % auf dem 2100er gebracht.
Was verwendest du dass du nicht die 1.4er verwenden kannst?

MfG
Alexander Pichlbauer

Aja…
hab einen Athlon XP 2100+ mit 512MB RAM und einen P3 550 mit 380MB RAM.

Hi,

ich habe es neulich auch mal mit dem JDK 1.4 probiert und es hat
überraschenderweise funktioniert. Das JDK 1.3.1 ist allerdings dann
notwendig, wenn das Programm mit einer aktivierten Oberfläche benutzt
wird, dann kommt es regelmäßig zu Abstürzen, keine Ahnung warum
(das Programm ist nicht von mir).

Einen spürbaren Geschwindigkeitsgewinn konnte ich mit 1.4 allerdings nicht
bemerken, allerdings sind 10% für diese Anwendung auch nicht spürbar, weil
die Laufzeit nie konstant ist, weil es Zufallselemente im Programm
gibt, die sich zwangsläufig auf die Laufzeit auswirken.

Meine letzte Chance besteht jetzt darin, das System mal unter Linux
zu betreiben. Davon verspreche und erhoffe ich mir einiges. :smile:

Schöne Grüsse

Ben