Co do systemu - zasada jest prosta: 4 giga lub więcej -> 64-bitowy, mniej niż 4 giga -> 32-bitowy.
Co prawda istnieją hacki na 32-bitowy Windows udostępniające powyżej 4 GB RAM, a z drugiej strony 64-bitowy zadowoli się i jednym gigabajtem, ale powyższe należy traktować jako „złotą zasadę”.
Dotyczy to też maszyn wirtualnych: jeśli stawiamy wirtualkę przydzielając jej 1 czy 2 giga, marnotrawstwem pamięci jest instalowanie w niej 64-bitowego systemu.
Co do programów: w 64-bitowym programie łatwiej zaalokować powyżej 2 gigabajtów pamięci. i właściwie tylko tyle. A teraz szczerze, jaki odsetek programów naprawdę tyle potrzebuje?
Nawet przeglądarki przy wielu otwartych kartach jakoś dają sobie radę zmieścić się do tych 1-2 gigabajtów w obrębie procesu.
Różnica prędkości (że 64 bity mają być rzekomo szybsze) to raczej mit. Fakt, 64-bitowa architektura teoretycznie powinna być szybsza w obliczeniach na 64-bitowych liczbach całkowitych. Czyli rzadko. Fakt, ma dwa razy więcej rejestrów procesora - ale ze względu na wielopoziomowy cache zapis do pamięci i zaraz odczyt jest praktycznie tak samo szybki jak dostęp do rejestru, więc różnica blednie. Fakt, ma 2× więcej rejestrów SSE (a w AVX512 ta różnica ma się powiększyć do 4×) - jaki to ma realny wpływ na wydajność nie wiem, ale znaczenie to ma tylko w grach i aplikacjach obliczeniowych...
Za to kod 64-bitowy jest znacznie większy. Raz że wszystkie wskaźniki są 8 bajtowe a nie 4, dwa że większość nowych instrukcji i odwołań do nowych rejestrów wymaga prefiksów - dodatkowych bajtów, bo x86-64 to tak naprawdę hack zbudowany na bazie zestawu instrukcji x86. To daje ze 20-30% większy kod dla równoważnego programu, większe ryzyko że kod nie zmieści się w cache procesora (a więc będzie działał wolniej), większe zużycie RAM-u, więcej zajętego miejsca na dysku.
Są więc plusy i minusy, które się w praktyce równoważą.
Zatem nie ma się co podniecać 64 bitami.