Behandlung von 64-Bit Variablen



  • Hallo zusammen,

    ich hätte mal eine Frage, auf die ich bis jetzt keine Antwort habe:

    vorausgesetzt ich habe eine 64Bit-CPU und auch eine 64-Bit Java-Runtime..., werden dann 64-Bit Variablen von der CPU auch tatsächlich als solche behandelt oder intern in 32-Bit gesplittet, wie es ja bei vielen C/C++-Compilern der Fall ist?

    Die Frage stellt sich mir deshalb, weil ich in meinem Programm extrem viele Operationen mit 64-Bit Variablen habe und ich sehr auf die Effizienz achten muss...

    Vielen Dank schon mal für konstruktive Anworten...



  • Der Vorteil von 64-Bit-Prozessoren ist, wie der Name schon sagt, dass die Register groß genug sind, um 64-Bit-Werte zu fassen. Deshalb muss da nicht gesplittet werden.



  • Ist schon klar,

    aber viele C/C++-Compiler erzeugen dennoch (wenn nicht explizit angegeben) reinen IA-32 kompatiblen Code. Da ist es dann auch völlig egal, wenn das Programm auf einer 64-Bit-Maschine läuft....

    Java-Programme müssen ja auch noch abwärts-kompatibel sein. Deshalb muss der Bytecode dementsprechend behandelt werden...



  • Javabytecode wird ja on-the-fly mit dem JIT-Compiler compiliert, dieser weiß natürlich, ob es eine 64bit-Maschiene ist und sollte entsprechenden Code erzeugen passend zur Platform. Ich weiß aber nicht, ob er es tatsächlich macht.

    C/C++/Native-Compiler erzeugen natürlich auch 64bit-Code, nur denen muss man das eben vorher sagen (d.h. den Targettype auf x64 stellen). Das wird insofern etwas umständlicher, als die dann erzeugte Anwendung nicht mehr auf 32bit läuft (üblicherweise werden beide Versionen und ein 32bit-Launcher mitgeliefert). Dafür entfällt bei nativem Code die JIT-Compilierung und die Anwendung läuft in der Regel schneller.



  • Ahh Danke, das hilft mir weiter....
    werd mal noch ein bisschen weiter suchen...

    ipsec: Glückwunsch zum 1000ten Beitrag 🙂


Anmelden zum Antworten