2012-06-22 6 views
6

Co, jeśli w ogóle, występują (lub inne) implikacje związane z tworzeniem nowego .NET ResourceManager na każde żądanie z new ResourceManger(myResourceType.FullName, myResourceType.Assembly) vs używanie "buforowanej instancji ResourceManager" w klasie wygenerowanej przez .Designer.cs (MyResourceType.ResourceManager)?Czy należy używać statycznego bufora ResourceManager lub nowej instancji dla każdego żądania WWW? Czy to ma znaczenie?

Pracuję w kontekście aplikacji ASP.NET MVC 3 przy użyciu plików .resx.

Edycja: Interesują mnie implikacje poza kosztem przydzielania pamięci dla nowego obiektu.

Edycja: Patrząc w dokumentacji MSDN dla ResourceManager.ReleaseAllResources, stwierdza, że:

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.

Wydaje się to sugerować, że początkowe otwarcie zbioru zasobów jest kosztowne, co sugeruje mi, że tworząc nowy kierownik na każde żądanie może być drogi. Jednak dokumenty nie sugerują najlepszej praktyki w odniesieniu do czasu życia/zakresu menedżerów zasobów.

Odpowiedz

4

Zrobiłem prymitywne profilowanie (używając MiniProfilera) różnicy między używaniem buforowanego menedżera (użyłem odbicia, aby znaleźć statyczny buforowany menedżer dla każdego typu zasobów) i używając nowego menedżera dla każdego dostępu kluczowego. Wyniki sugerują, że nowy menedżer trwał około 45 razy dłużej, co sugeruje mi, że istnieje realna korzyść z zastosowania podejścia opartego na pamięci podręcznej menedżera. Jednak oba podejścia były tak szybkie, że różnica prawdopodobnie nie ma większego znaczenia w praktyce.

0

Będziesz miał przydział obiektu podczas jego tworzenia.

oznacza to, że będziesz mieć wydajność i wpływ na pamięć, aby utworzyć obiekt w kółko.

można spróbować i sprawdzić, ile śmieci cykle kolekcja masz (za pomocą liczników wydajności) vs wysokości „pamięci podręcznej” przykład Resource Manager, który jest tworzony raz (na procesie) i do nich nie ma żadnych zbędnych alokacje

+0

Czy mówisz, że przydzielanie obiektów jest TYLKO implikacją? Bardziej interesuje mnie coś takiego jak buforowanie plików zasobów ... – ChaseMedallion

+0

Nie wiem o tym, ale będziesz musiał sprawdzić za pomocą liczników wydajności i profilerów – eyossi

Powiązane problemy