Czy mając system 64-bitowy powinno używać się programów również 64-bitowych? A może 32-bitowe wersje są lżejsze i szybsze? Poniżej garść informacji i testów.
Czego nie może program 32-bitowy?
Aby dokonać właściwego wyboru, trzeba zdać sobie sprawę z pewnych ograniczeń, dla których być może nie będą istnieć odpowiedniki 32-bitowe aplikacji. Są to:
Brak dostępu do dużej (>4GB, a w praktyce nawet i już mniej) ilości pamięci operacyjnej oraz innych elementów.
Brak dostępu do całego rejestru systemowego Windows lub części plików.
Brak dostępu urządzeń poprzez sterowniki, jeśli nie ma ich 32-bitowej wersji.
W pierwszym przypadku, jeśli aplikacja potrzebuje dostępu dużej ilości pamięci, to 32-bitowa architektura może ją dyskwalifikować. Co prawda można się posiłkować dyskiem twardym w takim przypadku, ale czas dostępu nawet na najbardziej wydajnych dyskach SSD wciąż ustępuje pamięci RAM.
Warto też mieć na uwadze, że programy 32-bitowe nie będą "widziały" całego rejestru jak i pewnych plików poprzez funkcje systemowe Windows, gdyż system tworzy wirtualne, emulowane środowisko dla tych programów - prawdziwe klucze lub pliki są ukrywane przed tymi programami.
Problem sterowników (np. skanera) może być uciążliwy przy próbie uzycia go w aplikacji w sposób pomijający sam system Windows i jego interfejsy.
Ponadto występują jeszcze inne aspekty, które utrudniają działanie aplikacjom 32-bitowym:
Brak możliwości stosowania długich procedur/funkcji.
Orgraniczoy rozmiar stosu.
Trudność operowania 64-bitowymi danymi.
Jeśli program z jakiegoś względu wykorzystuje bardzo złożone, długie procedury, funkcje lub metody, to ich długość jest ograniczona. To ograniczenie nie jest wcale aż tak trudno osiągalne przez aplikacje 32-bitowe. Co prawda, można taką jedną długą procedurę podzielić na mniejsze. Ale jeśli jest ona kluczowa dla programu i jego wydajności, to podział znacznie tą wydajność obniży.
Z kolei wywoływanie wielu procedur, szczególnie jedna z drugiej bardzo szybko może wykończyć specjalny obszar pamięci zwany "stosem". Zanim program przejdzie do wykonywania procedury, na stos odkłada dotyczhasowe dane tak, aby procedura mogła działać w sposób bardziej autonomiczny. Ten stos ma swoją pojemność, a w przypadku 32-bitowych aplikacji łatwiej ją przekroczyć.
Choć aplikacje 32-bitowe potrafią operować na danych 64-bitowych, to jednak wymaga to pewnej emulacji. Przez to ilość obliczeń drastycznie rośnie, a to może skutecznie spowolnić pracę programu.
32-bit vs 64-bit na przykładzie programu Odpaskudzacz
Program Odpaskudzacz PRO służy - w największym uproszczeniu - do przetwarzania tekstu. Jakie są różnice pomiedzy obiema architekturami programu?
32-bit
64-bit
Na dysku
3 511 kB
5 449 kB
W pamięci (zestaw prywatny)
32 572 kB
33 640 kB
W pamięci (szczytowy zestaw roboczy)
63 472 kB
66 560 kB
Czas kodowania 4 mln znaków
38 s.
37 s.
Jak w powyższej tabeli widać, program w wersji 64-bitowej zajmuje przede wszystkim więcej miejsca na dysku (o ok. 55%). Ale myliłby się ten, który uważać będzie, że większy plik exe to też analogicznie większe zużycie pamięci - tutaj różnica nie jest już aż tak widoczna, a wręcz można by rzecz, że jest marginalna. Podobnie małą różnicą odznacza się czas wykonywania zadania, gdyż 64-bitowa wersja wykonała je o ok. 1 sekundę szybciej. Szybciej, ale niewiele.
Testy syntetyczne
Jak to wygląda w testach syntetycznych? Czy powyższy przypadek jest wyjątkowy, czy raczej powtarzalny, a różnice - poza miejscem na dysku - są pomijalne?
Przygotowałem 6 podobnych programów, których zadaniem jest odnajdywanie wszystkich dzielników pewnej liczby. Istnieją 3 drobne różnice: jedna para programów pracuje na zmiennej 32-bitowej, druga na 64-bitowej, ale z wartością identyczną, jak w poprzednim przypadku. Trzeci program jest taki sam, jak poprzedni, ale wartość już przekracza zakres 32 bitów.
Każda para to oczywiście wersja 32-bitowa i 64-bitowa. Wyniki testów zawarte są w poniższej tabelce:
Zmienna
Wartość
32-bit
64-bit
32-bit
32-bit
Na dysku
2 598 kB
4 259 kB
W pamięci (szczytowy zestaw roboczy)
14 296 kB
14 732 kB
Czas działania
4,63 s.
4,62 s.
64-bit
32-bit
Na dysku
2 598 kB
4 258 kB
W pamięci (szczytowy zestaw roboczy)
14 340 kB
14 764 kB
Czas działania
4,73 s.
4,62 s.
64-bit
64-bit
Na dysku
2 598 kB
4 258 kB
W pamięci (szczytowy zestaw roboczy)
14 280 kB
14 752 kB
Czas działania
80,10 s.
4,82 s.
Podsumowanie
Który program zatem warto wybrać? Jak widać, pod względem ilości pamięci czy rozmiaru na dysku wariacje programu dla różnych długości i wartości zmiennych są niewiele znaczące, co jest zgodne z oczekiwaniami.
Ze względu na szybkość działania, nie ulega wątpliwości, że wersje 64-bitowe są bezkonkurencyjne, szczególnie gdy trzeba się zmierzyć z działaniami na wartościach, które są większe od 32-bitowych.
Zajmowana pamięć zdaje się nie stanowić kluczowego aspektu i wersje 64-bitowe, choć potrzebują jej nieznacznie więcej, to nie są to duże różnice, co pokrywa się też z wcześniejszym wynikiem testu.
Argumentem przemawiajacym za wersją 32-bitową może być jednak ilość miejsca na dysku, jaką zajmuje aplikacja. Jeśli ktoś nie dysponuje odpowiednio dużą wolną przestrzenią, to wybór 32-bitowej wersji może być pomocny.
Uwaga! Wszystkie porady na tej stronie są mojego autorstwa i objęte są prawami autorskimi! Kopiowanie, publikowanie lub cytowanie całego tekstu bez wiedzy autora - ZABRONIONE! Dowiedz się więcej o prawach autorskich
Strona istnieje od 25.01.2001 Ta strona używa plików Cookie. Korzystając z niej wyrażasz zgodę na przetwarzanie danych a zakresie podanym w Polityce Prywatności.
Wybierz wersję strony:
To tylko kopia strony wykonana przez robota internetowego! Aby wyświetlić aktualną zawartość przejdź do strony.