Przypuszczam, że skupiam się na x86, ale generalnie interesuje mnie przejście z 32 do 64 bitów.
Logicznie rzecz biorąc, widzę, że stałe i wskaźniki w niektórych przypadkach będą większe, więc programy prawdopodobnie będą większe. A chęć przydzielenia pamięci do granic słów w celu zwiększenia wydajności oznaczałaby więcej odstępów między alokacjami.
Słyszałem również, że tryb 32-bitowy na x86 musi opróżniać swoją pamięć podręczną podczas przełączania kontekstu z powodu możliwego nakładania się przestrzeni adresowych 4G.
Więc jakie są prawdziwe zalety 64-bitowej wersji?
I jako pytanie uzupełniające, czy 128-bitowe byłoby jeszcze lepsze?
Edytować:
Właśnie napisałem mój pierwszy program 32/64 bitowy. Tworzy powiązane listy / drzewa składające się z obiektów 16-bajtowych (wersja 32b) lub 32-bajtowych (wersja 64b) i dużo drukuje na stderr - nie jest to bardzo przydatny program i nie jest to coś typowego, ale jest to mój pierwszy.
Rozmiar: 81128 (32b) v 83672 (64b) - więc nie ma dużej różnicy
Szybkość: 17s (32b) v 24s (64b) - działa na 32-bitowym systemie operacyjnym (OS-X 10.5.8)
Aktualizacja:
Zauważam, że opracowywany jest nowy hybrydowy interfejs binarny x32 (Application Binary Interface), który jest 64b, ale używa wskaźników 32b. W przypadku niektórych testów skutkuje mniejszym kodem i szybszym wykonaniem niż 32b lub 64b.