Tôi cũng nhận thấy điều này nhưng trừ khi bạn nhận thấy bất kỳ sự giảm tốc độ nào, nó có thể được coi là tối ưu hóa vi mô. Chuyển đổi giữa các số float
và int
tương đối đắt trong khi chuyển đổi giữa float
và double
là giá rẻ. Vì vậy, bất cứ nơi nào bạn không cần thực hiện chuyển đổi float
sang int
, bạn có thể tránh nó. Loại truyền thường rẻ hơn chuyển đổi thực tế (ví dụ: sử dụng Convert.ToInt32
). Tuy nhiên, tất cả điều này không phải là một nút cổ chai trừ khi bạn thực hiện nó nhiều lần. Ngoài ra, từ this post:
- float, double và int phép nhân có hiệu suất tương tự ==> sử dụng đúng loại số cho ứng dụng của bạn, không phải lo lắng
- điện thoại là 4x đến 10x chậm hơn so với PC tôi sử dụng để phát triển ứng dụng của mình ==> thử nghiệm bằng điện thoại thực, không tin cậy máy tính của bạn cho hoạt động toán học
- phân chia chậm hơn gấp 8 lần so với phép nhân! ==> không sử dụng các bộ phận, ví dụ: cố gắng sử dụng 1/a rồi nhân
Số không chính thức, nhưng tôi nghĩ phương pháp cuối cùng là phương pháp được chấp nhận. Ngoài ra, tăng gấp đôi thường được cho là chậm hơn so với phao, nhưng điều này đi xuống đến hệ thống nó đang chạy trên. AFAIK, Windows Phone được tối ưu hóa để sử dụng doubles
, điều này sẽ giải thích cho lớp học Math
chấp nhận.
Tất cả trong tất cả, tôi muốn nói rằng khá phổ biến khi thấy quá trình truyền xảy ra khá một chút với khung công tác XNA. Tất nhiên, nó nên tránh bất cứ khi nào có thể, nhưng nó không phải là nguồn tắc nghẽn cho trò chơi trừ khi bạn cần thực hiện thường xuyên, trong trường hợp các khu vực khác có thể dễ dàng tối ưu hơn (hoặc thiết kế lại cấu trúc trò chơi có thể được yêu cầu).
Nếu có thể, hãy sử dụng lớp XNA 'MathHelper'. Nó có một số phương pháp và hằng số được nổi. http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.mathhelper%28v=XNAGameStudio.40%29.aspx – SomeWritesReserved
Hm, rất hay! :) Chỉ những thứ còn thiếu là hàm lượng giác. – Venemo