Tôi đang làm việc trên trò chơi Windows Phone 7 XNA. Đó là một cổng của trò chơi được viết bằng C++, và như vậy, tôi đang cố gắng viết lại ít đoạn mã gameplay nhất có thể.Chuỗi có thể thay đổi trong WP7 C#/XNA?
Rác là vấn đề lớn trên WP7, vì bộ thu không phát triển và chậm, nên bộ sưu tập (được kích hoạt mỗi 1MB) mất khoảng 10ms cho mỗi MB phân bổ. Tôi hoàn toàn có ý định sử dụng tối đa 90MB có sẵn, vì vậy chúng tôi đang xem xét một ~ 900ms gian hàng mỗi MB phân bổ.
Tôi đã có thể làm lại những thứ để chúng tôi không tạo ra rác trên mỗi khung hình, ngoại trừ một vài trường hợp dây.
Dường như StringBuilder.ToString() tạo ra rác và phương pháp được mô tả here không hoạt động trên WP7.
Hai điều tôi cần phải làm là: phút
- Format/giây/hundreths như mm: ss.hh để hiển thị ra màn hình. Rõ ràng tôi có thể làm điều đó với một StringBuilder (sử dụng các phương thức mở rộng không tạo ra rác từ boxing ints) và hiển thị StringBuilder trực tiếp với SpriteBatch.
- Tách một chuỗi có dạng "foo.bar.baz.qux" thành một mảng trên '.', Tức là {"foo", "bar", "baz", "qux"} và sao chép một phần tử tại thời gian vào một chuỗi các chuỗi. Điều này là để thiết lập trạng thái phân cấp của các diễn viên trò chơi. Nó cũng được chuyển trực tiếp khá nhiều từ game gốc, và khá phụ thuộc vào nó hoạt động theo cách này. Tôi thực sự muốn tránh viết lại nó.
Ngắn chuyển đổi rất nhiều mã để sử dụng char [] thay vì chuỗi, có cách nào để có chuỗi có thể thay đổi không rác thực sự trong C# không?
Chỉ một bên xoài chú ý có Generational GC http://blogs.msdn.com/b/abhinaba/archive/2011/04/13/generational-gc-in-windows-phone-mango.aspx – Terrance
Đây cũng là một cách để làm điều gì đó "gần gũi hơn" với các chuỗi có thể thay đổi được http://stackoverflow.com/questions/6913435/how-to-get-a-list-of-mutable-strings – Terrance