2009-11-07 3 views
0

내 응용 프로그램에는 각 데이터 입력 화면이 usercontrol로 구현되는 탐색 프레임 워크가 있습니다. 이러한 UserControls 중 일부는 매우 커서 느린 시스템에서는 구성하는 데 몇 초가 걸릴 수 있습니다.캐싱 제어 인스턴스

속도 향상을 위해 이러한 컨트롤 인스턴스를 필요할 때마다 인스턴스화하는 대신 캐싱하는 것이 좋습니다. 테스트에서, 이것은 분명히 일을 빠르게하는 것처럼 보입니다. 나는이 일을해야한다 -


public void Navigate(Type pageType) 
{ 
    Control page = GetOrCreatePage(pageType); 
    hostPanel.Clear(); 
    hostPanel.Add(page); 
} 

private Control GetOrCreate(Type controlType) 
{ 
    if(!cache.Contains(controlType)) 
     cache.Add(controlType, Activator.CreateInstance(type);  
    return cache[type]; 
} 

내 질문은 :

매우 단순화, 나는 기본적으로 이런 일을하고 있어요? 나는 이것에 대해 많은 예제를 보지 못했기 때문에 묻고있는 중이다. 컨트롤 인스턴스 (처분, 이벤트 구독 관리 등)를 지원하기 위해서는 공정한 액수 나 리팩토링과 재고를해야했다. 나는 그것이 다른 것 같아요. 나는 이것이 OK인지 나중에 확인해보고 싶습니다. 나중에 냄새를 맡을 것이 아닙니다.

모든 의견을 환영합니다.

답변

0

인스턴스를 만드는 데 너무 오래 걸리는 이유를 생각해 볼 수 있습니다.로드하는 데 시간이 걸리는 데이터가 있고 대신 해당 데이터를 캐시하는 것이 더 나을 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. 생성자에서 발생하는 IO는 없으며 대부분 디자이너가 생성 한 UI 초기화 로직 만 있습니다. 이 컨트롤에는 실제로 많은 UI가 있습니다. 그러나이 사용자 정의 컨트롤에는 다른 사용자 정의 컨트롤이 있습니다. 구성이나 초기화에 비효율적 인 코드가있을 수 있습니다. 프로파일 러를 통해 이것을 실행하여 확인합니다. 그러나 프로파일 링으로 모든 것이 정상이며 초기화 코드가 실행되는 것만 알면, 내가하고있는 기술적 인 문제가 보이십니까? –