Ist 32bit langsamer als 64bit?

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 :)

martin7812  02.11.2015, 09:44

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.

3

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?

Woher ich das weiß:Berufserfahrung – Beruf, Schule, Hobby und eigene Erfahrungen
S20000 
Fragesteller
 01.11.2015, 20:05

Danke, ich benutze Unity und Visual Studio.

0
Berny96  01.11.2015, 20:12
@S20000

In Unity kannst du ganz einfach dein Spiel ohne jeden Aufwand von 64 auf 32 bit und anderes rum schalten. Im Build Settings bei Architecture einfach auf 32 bit umstellen :)

0
S20000 
Fragesteller
 01.11.2015, 21:40
@Berny96

ja das weiss ich, aber da mein Projekt viel zu gross ist, dauert das jedes Mal Stunden.

0

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.