Tôi cho rằng tôi đang tập trung vào x86, nhưng tôi thường quan tâm đến việc chuyển từ 32 lên 64 bit.
Về mặt logic, tôi có thể thấy rằng hằng số và con trỏ, trong một số trường hợp, sẽ lớn hơn nên các chương trình có khả năng lớn hơn. Và mong muốn phân bổ bộ nhớ trên ranh giới từ cho hiệu quả sẽ có nghĩa là nhiều khoảng trắng hơn giữa các lần phân bổ.
Tôi cũng đã nghe nói rằng chế độ 32 bit trên x86 phải xóa bộ nhớ cache của nó khi chuyển đổi ngữ cảnh do có thể có không gian địa chỉ 4G chồng chéo.
Vì vậy, những lợi ích thực sự của 64 bit là gì?
Và như một câu hỏi bổ sung, liệu 128 bit có còn tốt hơn không?
Biên tập:
Tôi vừa viết chương trình 32/64 bit đầu tiên của mình. Nó tạo danh sách / cây được liên kết gồm các đối tượng 16 byte (phiên bản 32b) hoặc 32 byte (phiên bản 64b) và thực hiện rất nhiều thao tác in ra stderr - không phải là một chương trình thực sự hữu ích và không phải là một cái gì đó điển hình, nhưng nó là chương trình đầu tiên của tôi.
Kích thước: 81128 (32b) v 83672 (64b) - vì vậy không có nhiều sự khác biệt
Tốc độ: 17 giây (32b) v 24 giây (64b) - chạy trên hệ điều hành 32 bit (OS-X 10.5.8)
Cập nhật:
Tôi lưu ý rằng một phiên bản lai x32 ABI (Giao diện nhị phân ứng dụng) đang được phát triển có kích thước 64b nhưng sử dụng con trỏ 32b. Đối với một số thử nghiệm, nó dẫn đến mã nhỏ hơn và thực thi nhanh hơn 32b hoặc 64b.