2012-06-22 12 views
6

Điều gì, nếu có hiệu quả (hoặc khác) ngụ ý của việc tạo ra một mới ResourceManager trên mỗi yêu cầu với new ResourceManger(myResourceType.FullName, myResourceType.Assembly) vs sử dụng "thể hiện ResourceManager lưu trữ" trong lớp .Designer.cs tạo ra (MyResourceType.ResourceManager)?Tôi có nên sử dụng ResourceManager được lưu trong bộ nhớ cache tĩnh hoặc một phiên bản mới cho mỗi yêu cầu web không? Nó có quan trọng không?

Tôi đang làm việc trong ngữ cảnh của ứng dụng ASP.NET MVC 3 sử dụng tệp .resx.

Chỉnh sửa: Tôi quan tâm đến các tác động ngoài chi phí cấp phát bộ nhớ cho đối tượng mới.

Edit: Nhìn vào tài liệu MSDN cho ResourceManager.ReleaseAllResources, nó khẳng định rằng:

This method will shrink the working set in a running application. Any future resource lookups on this ResourceManager will be as extensive as the first lookup, since it will need to search and load resources again.

này dường như ngụ ý rằng việc mở cửa đầu tiên của tập tài nguyên là tốn kém, điều này gợi ý với tôi rằng việc tạo ra một mới người quản lý trên mỗi yêu cầu có thể tốn kém. Tuy nhiên, các tài liệu không đề xuất một phương pháp hay nhất liên quan đến tuổi thọ/phạm vi của các nhà quản lý tài nguyên.

Trả lời

4

Tôi đã làm một số hồ sơ nguyên thủy (sử dụng MiniProfiler) về sự khác biệt giữa việc sử dụng trình quản lý được lưu trong bộ nhớ cache (tôi đã sử dụng tính năng phản chiếu để tìm trình quản lý lưu trữ tĩnh cho từng loại tài nguyên) và sử dụng trình quản lý mới cho mỗi lần truy cập khóa. Kết quả cho thấy rằng người quản lý mới mất khoảng 45 lần, điều này cho tôi thấy rằng có một lợi ích hiệu suất thực sự khi sử dụng phương pháp quản lý được lưu trong bộ nhớ cache. Tuy nhiên, cả hai cách tiếp cận quá nhanh đến nỗi sự khác biệt có lẽ không quan trọng nhiều trong thực tế.

0

Bạn sẽ có phân bổ đối tượng khi tạo đối tượng.

điều đó có nghĩa là bạn sẽ có tác động về hiệu suất và bộ nhớ để tạo đối tượng lặp đi lặp lại.

bạn có thể thử nó và kiểm tra có bao nhiêu rác thải thu gom chu kỳ bạn đã (sử dụng bộ đếm hiệu suất) vs số lượng các trường hợp quản lý tài nguyên "cache" được tạo ra một lần (mỗi quá trình) và do không có phân bổ không cần thiết

+0

Bạn có nói rằng phân bổ đối tượng là hàm ý CHỈ không? Tôi quan tâm nhiều hơn đến những thứ như lưu trữ tệp tài nguyên ... – ChaseMedallion

+0

Tôi không biết về nó, nhưng bạn sẽ phải kiểm tra với các bộ đếm hiệu suất và các trình lược tả – eyossi