Czy jest jakiś dobry powód, aby dostarczyć wersję 32-bitową wraz z 64-bitową wersją jakiegokolwiek oprogramowania skierowanego do nowoczesnych komputerów stacjonarnych, na których działają 64-bitowe systemy operacyjne na 64-bitowym sprzęcie?
Wygląda na to, że 64-bitowe oprogramowanie byłoby bardziej wydajne, w razie potrzeby pozwalałoby na większe wykorzystanie pamięci itp. Apple nawet używa 64-bitowych procesorów do swoich telefonów, mimo że mają tylko 1-2 GB pamięci RAM, znacznie poniżej 4 GB limit 32-bitowych procesorów.
Odpowiedzi:
Korzyści z 32-bitowego oprogramowania w środowiskach 64-bitowych
Wady 32-bitowego oprogramowania w środowiskach 64-bitowych
Inne aspekty
O ile nie porównam tutaj bardzo specyficznej architektury procesora, systemu operacyjnego i infrastruktury bibliotecznej, nie będę mógł wdawać się w więcej szczegółów.
źródło
Różnica między oprogramowaniem 32-bitowym a oprogramowaniem 64-bitowym polega na wielkości wskaźników, a być może na wielkości rejestrów liczb całkowitych. Otóż to.
Oznacza to, że wszystkie wskaźniki w twoim programie są dwa razy większe. I (przynajmniej w architekturze ILP32 / LP64) twoje
long
są również dwa razy większe. Zwykle osiąga to około 30% wzrost rozmiaru kodu obiektu. To znaczy że …Ma to istotny wpływ na wydajność.
Takie postępowanie ma sens tylko wtedy, gdy można „odkupić” te koszty wydajności. Zasadniczo istnieją dwa sposoby, aby to zrobić: wykonujesz wiele 64-bitowych operacji na liczbach całkowitych lub potrzebujesz więcej niż 4 zmapowanej pamięci GiByte. Jeśli jedno lub oba z nich są prawdziwe, warto zastosować oprogramowanie 64-bitowe, w przeciwnym razie nie.
Uwaga: istnieje kilka architektur, w których nie ma odpowiednich wariantów 32- lub 64-bitowych. W takim przypadku pytanie oczywiście nie ma sensu. Najbardziej znane to IA64, który jest tylko 64-bitowy i nie ma wariantu 32-bitowego, oraz x86 / AMD64, które są, choć ściśle powiązane, różne architektury, x86 jest tylko 32-bitowy, a AMD64 jest tylko 64-bitowy.
W rzeczywistości to ostatnie stwierdzenie nie jest już w 100% prawdziwe. Linux ostatnio dodał x32 ABI, który pozwala na uruchamianie kodu AMD64 z 32-bitowymi wskaźnikami, więc nawet jeśli nie jest to „właściwa” architektura procesora, jest to sposób użycia architektury AMD64 w taki sposób, jakby miał natywny Wariant 32-bitowy. Zrobiono to właśnie dlatego napowietrznej wydajność wspomniałem powyżej powodując realne mierzalne, policzalne problemy dla użytkowników pracujących w świecie rzeczywistym świecie rzeczywistym kodu w systemach rzeczywistych.
źródło
Jeśli oprogramowanie musi łączyć się bezpośrednio ze starszymi systemami, sterownikami lub bibliotekami, może być konieczne dostarczenie wersji 32-bitowej, ponieważ AFAIK ogólnie system operacyjny (zdecydowanie Windows i Linux AFAIK) nie pozwala na mieszanie 64-bitowych i 32-bitowych -bitowy kod w procesie.
Na przykład, jeśli twoje oprogramowanie potrzebuje dostępu do specjalistycznego sprzętu, klienci często korzystają ze starszych modeli, dla których dostępne są tylko sterowniki 32-bitowe.
W pobliżu
źródło
Jeśli twoje oprogramowanie jest biblioteką DLL, MUSISZ podać wersje 32-bitową i 64-bitową. Nie masz pojęcia, czy klient będzie używał oprogramowania 32-bitowego, czy 64-bitowego do komunikowania się z biblioteką DLL, a biblioteka DLL musi używać tej samej długości bitów co aplikacja. To nie podlega negocjacji.
Jeśli twoje oprogramowanie jest samodzielnym plikiem wykonywalnym, jest mniej jasne. Jeśli nie potrzebujesz, aby twoje oprogramowanie działało na starszych systemach operacyjnych, może nie być konieczne zapewnienie wersji 32-bitowej. Po prostu trzymaj się wersji 64-bitowej, określ, że wymaga 64-bitowego systemu operacyjnego i wykonanej pracy.
Jeśli jednak potrzebujesz oprogramowania do działania na starszych systemach operacyjnych, być może NIE będziesz chciał udostępniać wersji 64-bitowej. Jeśli masz dwie wersje, to dwukrotnie testujesz, a prawidłowe testowanie oprogramowania w różnych wersjach systemu operacyjnego i językach nie jest szybkim procesem. Ponieważ oprogramowanie 32-bitowe działa idealnie na platformie 64-bitowej, nadal dość powszechne jest, że oprogramowanie jest wydawane tylko w wersji 32-bitowej, szczególnie przez mniejszych programistów.
Należy również pamiętać, że większość telefonów komórkowych jest 32-bitowa. Być może niektóre high-endowe są teraz 64-bitowe, ale nie ma istotnego powodu, aby zrobić ten krok. Jeśli więc pracujesz na różnych platformach i chcesz, aby Twój kod działał również na Androidzie, pozostanie w wersji 32-bitowej jest bezpieczną opcją.
źródło