Nếu bạn lo lắng rằng các bộ sưu tập rác đang ảnh hưởng đến hiệu suất, một trong những công cụ tốt nhất bạn có thể học cách sử dụng là CLR Profiler. Tiện ích này cho phép bạn cấu hình phân bổ heap được thực hiện bởi chương trình của bạn, để bạn có thể xác định chính xác phương thức nào đang tạo ra rác. Hãy nhớ rằng rất nhiều thứ không rõ ràng có thể phân bổ trên heap: chuỗi nối, lập chỉ mục từ điển với các phím liệt kê, đóng cửa, đại biểu, v.v. Ngay cả một ít rác, được tạo một lần trên mỗi khung ở 60 khung hình/giây, có thể nhanh chóng thêm trong hoàn cảnh thích hợp.
Điều đó nói rằng, những gì bạn mô tả không giống như vấn đề với việc thu gom rác thải đối với tôi. GC nói chung là đủ nhanh, ngay cả trong một bộ sưu tập hoàn chỉnh, để chỉ gây ra một vài khung hình được giảm - nói cách khác, bạn sẽ nhận thấy một nhỏ, gây phiền nhiễu jerk thường xuyên như vậy, nhưng không phải là một sự suy giảm liên tục.
(Nên biết trước: này chỉ áp dụng trên máy tính, trong đó có một GC rất phức tạp so với các nền tảng XNA khác.)
Bạn nên cố gắng gắn một hồ sơ để mã của bạn để xác định phương pháp đang dùng lâu nhất để hoàn thành ; nếu vấn đề của bạn không liên quan đến GC, điều này có thể mang tính thông tin. Trước đây, tôi đã sử dụng EQATEC, mặc dù tôi đã gặp sự cố với một số phiên bản mới hơn của họ. Bạn có thể thử điều đó hoặc bạn có thể xem xét trên Google để thay thế.
Nguồn
2011-09-07 18:48:13
Gợi ý: Câu hỏi (tổng thể) tốt hơn có thể là -> Tôi có thể làm gì để xác định nơi xảy ra sự cố? Có vẻ như điều này có thể do nhiều thứ khác nhau gây ra, chúng tôi sẽ phải xem rất nhiều mã của bạn để xác định gốc của vấn đề lag – jadarnel27
Có quá nhiều mã để chỉ xem qua. Tôi đang yêu cầu nhiều hơn cho các giải pháp lý thuyết hoặc nguyên nhân có thể làm chậm trễ. Hiện tại không có liên quan đến mạng nên không phải là vấn đề. – Johannes
Một điều tôi sẽ đề nghị là in (để một tập tin đăng nhập gỡ lỗi hoặc một cái gì đó) một dấu thời gian khi bạn nhập và thoát khỏi chương trình con lớn hơn của bạn/khu vực nghi ngờ. Bằng cách này bạn có thể thấy nơi bạn đang mất thời gian đó, và làm việc hướng tới vấn đề – jadarnel27