Gibt es einen guten Grund, eine 32-Bit-Version zusammen mit einer 64-Bit-Version einer Software für moderne Desktop-Computer bereitzustellen, auf denen moderne 64-Bit-Betriebssysteme auf 64-Bit-Hardware ausgeführt werden?
Es scheint, dass 64-Bit-Software effizienter ist, bei Bedarf eine höhere Speichernutzung zulässt usw. Apple verwendet sogar 64-Bit-Prozessoren für seine Telefone, obwohl sie nur über 1-2 GB RAM verfügen, weit unter den 4 GB Limit für 32-Bit-CPUs.
Antworten:
Vorteile von 32-Bit-Software in 64-Bit-Umgebungen
Nachteile von 32-Bit-Software in 64-Bit-Umgebungen
Weitere Aspekte
Wenn ich hier nicht eine ganz bestimmte CPU-Architektur, Betriebssystem- und Bibliotheksinfrastruktur vergleiche, kann ich nicht näher darauf eingehen.
quelle
Der Unterschied zwischen 32-Bit-Software und 64-Bit-Software ist die Größe der Zeiger und möglicherweise die Größe der Ganzzahlregister. Das ist es.
Das bedeutet, dass alle Zeiger in Ihrem Programm doppelt so groß sind. Und (zumindest auf einer ILP32 / LP64-Architektur) sind Ihre
long
s auch doppelt so groß. Dies führt normalerweise zu einer Erhöhung der Objektcodegröße um ca. 30%. Das bedeutet, dass …Dies hat einen nicht zu vernachlässigenden negativen Einfluss auf die Leistung.
Dies zu tun, macht nur Sinn, wenn Sie diese Leistungskosten irgendwie "zurückkaufen" können. Grundsätzlich gibt es zwei Möglichkeiten, dies zu tun: Sie führen eine Menge 64-Bit-Ganzzahlberechnungen durch, oder Sie benötigen mehr als 4 GiByte abgebildeten Speicher. Wenn eines oder beide zutreffen, ist es sinnvoll, 64-Bit-Software zu verwenden, andernfalls ist dies nicht der Fall.
Hinweis: In einigen Architekturen gibt es keine entsprechenden 32- oder 64-Bit-Varianten. In diesem Fall ergibt die Frage offensichtlich keinen Sinn. Die bekanntesten sind IA64 (nur 64-Bit und keine 32-Bit-Variante) und x86 / AMD64 (wenn auch eng verwandt) mit unterschiedlichen Architekturen, wobei x86 nur 32-Bit und AMD64 nur 64-Bit ist.
Tatsächlich ist diese letztere Aussage nicht mehr zu 100% wahr. Linux hat kürzlich das x32-ABI hinzugefügt, mit dem Sie AMD64-Code mit 32-Bit-Zeigern ausführen können. Auch wenn dies keine "richtige" CPU-Architektur ist, können Sie die AMD64-Architektur so verwenden, als ob sie eine native wäre 32-Bit-Variante. Dies geschah genau deshalb, weil der oben erwähnte Leistungsaufwand reale messbare und quantifizierbare Probleme für reale Benutzer verursachte, die realen Code in realen Systemen ausführen.
quelle
Wenn die Software direkt mit älteren Systemen, Treibern oder Bibliotheken verbunden werden muss, müssen Sie möglicherweise eine 32-Bit-Version bereitstellen, da AFAIK das Mischen von 64-Bit und 32-Bit im Allgemeinen (definitiv Windows und Linux AFAIK) nicht zulässt -Bit-Code innerhalb eines Prozesses.
Wenn Ihre Software beispielsweise auf Spezialhardware zugreifen muss, ist es für Kunden nicht ungewöhnlich, ältere Modelle zu betreiben, für die nur 32-Bit-Treiber verfügbar sind.
Für den Fall, dass Sie nicht mehr weiterkommen möchten
quelle
Wenn Ihre Software eine DLL ist, MÜSSEN Sie sowohl 32-Bit- als auch 64-Bit-Versionen bereitstellen. Sie haben keine Ahnung, ob der Kunde 32-Bit- oder 64-Bit-Software verwendet, um mit der DLL zu kommunizieren, und die DLL muss dieselbe Bitlänge wie die Anwendung verwenden. Dies ist nicht verhandelbar.
Wenn es sich bei Ihrer Software um eine eigenständige ausführbare Datei handelt, ist dies weniger klar. Wenn Sie Ihre Software nicht für ältere Betriebssysteme benötigen, müssen Sie möglicherweise keine 32-Bit-Version bereitstellen. Halten Sie sich einfach an die 64-Bit-Version, geben Sie an, dass ein 64-Bit-Betriebssystem erforderlich ist, und erledigen Sie die Aufgabe.
Wenn Sie jedoch Ihre Software für ältere Betriebssysteme benötigen, möchten Sie möglicherweise NICHT aktiv eine 64-Bit-Version bereitstellen. Wenn Sie über zwei Versionen verfügen, haben Sie die doppelte Testdauer, und das ordnungsgemäße Testen von Software für eine Reihe von Betriebssystemversionen und -sprachen ist kein schneller Vorgang. Da 32-Bit-Software auf einer 64-Bit-Plattform problemlos ausgeführt werden kann, ist es immer noch üblich, dass Software nur als 32-Bit-Software veröffentlicht wird, insbesondere von kleineren Entwicklern.
Beachten Sie auch, dass die meisten Handys 32-Bit sind. Vielleicht sind einige High-End-Versionen jetzt 64-Bit, aber es gibt wenig zwingenden Grund, diesen Schritt zu tun. Wenn Sie plattformübergreifend entwickeln und möchten, dass Ihr Code auch auf Android ausgeführt wird, ist die 32-Bit-Version eine sichere Option.
quelle