Tôi đã nhận thấy rằng ứng dụng nds của tôi hoạt động nhanh hơn một chút khi tôi thay thế tất cả các phiên bản byte bằng số nguyên. tất cả các ví dụ trực tuyến đặt các phiên bản u8/u16 bất cứ khi nào có thể. là có một lý do cụ thể là tại sao đây là trường hợp?Tại sao các số nguyên xử lý nhanh hơn byte trên NDS?
Trả lời
Bộ vi xử lý chính mà Nintendo DS sử dụng là ARM9, bộ xử lý 32 bit.
Reference: http://en.wikipedia.org/wiki/ARM9
Thông thường, CPU sẽ thực hiện các thao tác trong word sizes, trong trường hợp này là 32 bit. Tùy thuộc vào hoạt động của bạn, phải chuyển đổi các byte lên đến số nguyên hoặc ngược lại có thể gây ra sự căng thẳng thêm vào bộ vi xử lý. Chuyển đổi này và khả năng thiếu hướng dẫn cho các giá trị khác với số nguyên 32 bit có thể gây ra sự thiếu tốc độ.
Bổ sung cho những gì Daniel Li cho biết, quyền truy cập bộ nhớ trên nền tảng ARM phải được căn chỉnh từ, tức là bộ nhớ tìm nạp phải là bội số của 32 bit. Lấy một biến byte từ bộ nhớ ngụ ý tìm nạp toàn bộ từ chứa byte liên quan, và thực hiện các hoạt động bit-khôn ngoan cần thiết để phù hợp với nó trong các bit ít quan trọng nhất của thanh ghi bộ xử lý.
Các hướng dẫn bổ sung sẽ được trình biên dịch tự động phát ra, vì nó biết sự căn chỉnh thực tế của các biến của bạn.
Bạn có thể đưa ra một ví dụ mã cụ thể không? Tôi nghi ngờ bạn đang nhìn thấy các ví dụ khai báo các biến số 8/16 bit trong các cấu trúc và thay vào đó bạn sử dụng chúng làm người dân địa phương. –