Frage

Wie geht der JVM mit einem primitiven "Long", dem 64bit, eines 32 -Bit -Prozessors um?


Kann es auf einer 32-Bit-Maschine mit Multi-Core-32-Bit-Maschine parallel mulitple Kerne verwenden?
Wie viel langsamer sind 64 -Bit -Operationen auf einer 32 -Bit -Maschine?

War es hilfreich?

Lösung

Es kann mehrere Kerne verwenden, um verschiedene Threads auszuführen, aber sie verwendet sie nicht parallel für 64 -Bit -Berechnungen. Ein 64 -Bit -Lang wird im Grunde genommen als zwei 32 -Bit -INTs gespeichert. Um sie hinzuzufügen, werden zwei Ergänzungen benötigt, um das Tragebit zu verfolgen. Die Multiplikation ist ähnlich wie zwei zweistellige Zahlen, außer dass jede Ziffer in Basis 2^32 anstelle von Basis 10 ist.

Bearbeiten Sie über Geschwindigkeit: Ich kann nur über den Geschwindigkeitsunterschied erraten. Eine Addition erfordert zwei Adds anstelle eines, und eine Multiplikation würde (glaube ich) vier Multiplikationen anstelle eines. Ich vermute jedoch, dass, wenn alles in Registern aufbewahrt werden kann, die tatsächliche Zeit für die Berechnung in den Schatten gestellt wird Operationen. Ich stelle mir vor, dass es von dem Prozessor, der jeweiligen JVM -Implementierung, der Mondphase usw. abhängen würde. Wenn Sie keine schwere Anzahl durchführen, würde ich mir keine Sorgen machen. Die meisten Programme verbringen die meiste Zeit damit, auf IO zu/von der Festplatte oder dem Netzwerk zu warten.

Andere Tipps

Aus TalkingTree, und die Java Hotspot FAQ:

Im Allgemeinen sind die Vorteile, die in der Lage sind, größere Mengen an Speicher anzugehen, mit einem kleinen Leistungsverlust in 64-Bit-VMs im Vergleich zu derselben Anwendung auf einem 32-Bit-VM. Dies liegt daran Ihr Java -Programm.
Die gute Nachricht ist, dass mit AMD64- und EM64T-Plattformen, die im 64-Bit-Modus ausgeführt werden, das Java VM einige zusätzliche Register erhält, mit denen sie effizientere native Anweisungssequenzen generieren können. Diese zusätzlichen Register erhöhen die Leistung bis zu dem Punkt, an dem beim Vergleich der Ausführungsgeschwindigkeit von 32 bis 64 Bit häufig kein Leistungsverlust vorliegt.

Der Leistungsdifferenz, der eine Anwendung mit einer 64-Bit-Plattform im Vergleich zu einer 32-Bit-Plattform auf SPARC vergleicht. Auf Plattformen AMD64 und EM64T liegt diese Differenz von 0-15%, abhängig von der Menge des Zeigers zugreift, der auf Ihre Anwendung zugreift.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top