Ist 32bit langsamer als 64bit?
Ich entwickle momentan ein Spiel und bisher habe ich eine 64bit version und eine 32bit Version separat und ich bin am Überlegen, ob ich komplett auf nur 32bit wechseln sollte, da es sehr aufwändig für mich ist, immer 2 Versionen zu machen. Was ist überhaupt der Unterschied? Laufen 64bit 3D Anwendungen schneller als 32bit?
5 Antworten
Die Geschwindigkeit von 32- und 64-bit-Code ist sehr komplex.
Bei einer ähnlichen Frage wird darauf verwiesen, dass es eigentlich nur möglich ist, die Geschwindigkeit beider Programme auf exakt dem selben Gerät zu testen, auf dem das Programm später laufen soll, da sich nicht vorhersagen lässt, welche Variante schneller ist.
Bei Sparc-Prozessoren (Un*x-Workstations) gibt der Hersteller an, dass 32-bit-Programme prinzipiell schneller laufen und weniger Speicher benötigen als 64-bit-Programme und dass man auch auf einem 64-bit-System 32-bit-Programme schreiben soll, wenn man nicht mehr als 3GB Speicher benötigt und nicht mit 64-bit-Ganzzahlen rechnet.
Bei x86-64-Prozessoren (also PCs) wird es wesentlich komplizierter sein, da verschiedene Hersteller gibt (Intel, AMD, früher auch noch andere) und das Verhalten (Geschwindigkeit) auf CPUs unterschiedlicher Hersteller (oder sogar verschiedenen CPUs des gleichen Herstellers) total unterschiedlich sein kann.
An deiner Stelle würde ich nur eine 32-bit-Version herausgeben. Im Gegensatz zu Linux muss man bei Windows keine zusätzlichen Dateien installieren, um 32-bit-Programme auf einem 64-bit-System laufen zu lassen.
Dadurch, dass du zwei Versionen herausgibst, hast du zusätzliche Arbeit.
Viele neuartige Geräte (z.B. Tablets, die man auch als PC verwenden kann, "Mini-PCs", ...) haben nur einen 32-bit-Prozessor. Wenn du nur eine 64-bit-Version herausgibst, kann man dein Programm auf solchen Rechnern nicht benutzen.
64 sind besser. 32 arbeitet nicht so schnell, kann den Ram nicht sogut verwenden. 64 nimmt vielmehr Informationen aus den Ram (schneller). Bleib bei 64 Bit :)
32 arbeitet nicht so schnell
Ich habe mit dem gleichen Compiler (GCC) und den gleichen Optimierungsoptionen (-Os) ein Testprogramm compiliert:
(64-bit) Double-Arithmetik: 32-bit war 0.8% schneller
64-bit-Integerarithmetik: 64-bit war 18.9% schneller
Pointerarithmetik: 32-bit war 43.3% schneller
32-bit-Integerarithmetik: 32-bit war 2.8% schneller
(32-bit) Float-Arithmetik: 32-bit war 3.1% schneller
Lediglich bei 64-bit-Integerarithmetik war das 64-bit Programm schneller als das 32-bit-Programm.
Bei Pointerarithmetik war das 32-bit-Programm sogar deutlich schneller.
(Beide Ergebnisse waren so aber zu erwarten.)
Bei 3D-Spielen wird hauptsächlich Floatingpoint-Arithmetik verwendet, keine Integerarithmetik.
Das problem mit 32bit Betriebsystemen ist das sie NIE mehr als 4GB RAM verwenden können. Das heisst das wenn dein Spiel aufwendigere Grafik hat oder sonst irgendwie mehr Speicher benötigen sollte es auf 32bit nicht all den RAM benutzen kann wenn jemand z.B 8GB hat.
Andere unterschiede gibt es eigentlich nicht, außer das 32bit langsam aber sicher ausstirbt.
Dürfte ich fragen womit du dein Spiel Entwickelst?
32 Bit Anwendungen können nur 4GB RAM nutzen. Wenn du nur eine Version entwickeln willst, dann musst du überlegen für wen diese sein soll. Für Uralte Rechner, welche kein 64 Bit unterstützen oder eher Zukunftsorientiert, da 32 Bit keine Zukunft hat.
Allgemein:
- 64bit Programme sind etwa doppelt so groß wie 32 bit Programme. Bei Spielen mit Gigabyteweisen Texturen fällt das jedoch nicht ins Gewicht.
- 64Bit Programme können (müssen aber nicht) deutlich performanter sein - es können halt 64bit pro Instruktion manipuliert werden. Was du da rausholen kannst erfährst du am Besten, indem du die zwei Versionen durch den Profiler jagst.
- Bedenke aber, dass du mit einer reinen 64Bit Anwendung die Besitzer von 32bit Betriebssystemen aussperrst.
Danke, ich benutze Unity und Visual Studio.