2012-06-22 3 views
6

.Designer.cs 생성 클래스 (MyResourceType.ResourceManager)의 "캐싱 된 ResourceManager 인스턴스"를 사용하는 경우 모든 요청에 ​​대해 new ResourceManger(myResourceType.FullName, myResourceType.Assembly)과 함께 모든 요청에 ​​대해 새 .NET ResourceManager을 작성하면 성능 또는 기타 영향이 발생합니다.각 웹 요청에 대해 정적 캐시 된 ResourceManager 또는 새 인스턴스를 사용해야합니까? 그게 그렇게 중요한 건가?

.resx 파일을 사용하는 ASP.NET MVC 3 응용 프로그램의 컨텍스트에서 작업하고 있습니다.

편집 : 새 개체에 메모리를 할당하는 데 드는 비용 이상의 의미에 관심이 있습니다.

편집 :이 보인다

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.

자원 세트의 초기 개방이 새로운를 만드는 것을 나에게 제안하는 비싼 것을 의미하기 : ResourceManager.ReleaseAllResources에 대한 MSDN 문서를 보면, 그 상태 각 요청에 대한 관리자는 비용이 많이들 수 있습니다. 그러나 문서는 리소스 관리자의 수명/범위와 관련하여 모범 사례를 제안하지 않습니다.

답변

4

캐싱 된 관리자 (각 리소스 유형에 대해 정적 캐시 된 관리자를 찾기 위해 리플렉션을 사용함)와 각 키 액세스에 대해 새 관리자를 사용하는 것의 차이점에 대한 원시 프로파일 링 (MiniProfiler 사용)을 수행했습니다. 결과에 따르면 새 관리자는 약 45 배의 시간이 걸렸지 만 캐시 된 관리자 접근 방식을 사용하면 실제로 성능상의 이점이 있음을 알 수 있습니다. 그러나 두 방법 모두 너무 빠르기 때문에 차이가 실제로는별로 중요하지 않습니다.

0

개체를 만들 때 할당해야합니다.

즉, 개체를 반복해서 만들 때 성능과 메모리에 미치는 영향을 의미합니다. 한 번 생성 (프로세스 당) 및 그 불필요한 할당이없는 한 "캐시"자원 관리 프로그램 인스턴스의 양 대 (성능 카운터를 사용하여) 얼마나 많은 쓰레기 수집주기

당신은 그것을 시도하고 확인할 수 있습니다

+0

개체 할당이 유일한 의미인가요? 나는 리소스 파일 캐싱과 같은 것에 더 많은 관심을 가지고 있습니다 ... – ChaseMedallion

+0

그것에 대해 모르지만 성능 카운터 및 프로파일 러를 확인해야합니다. – eyossi