2009-06-17 3 views
5

나는이 article과 관찰 가능한 컬렉션이 WPF의 List < 컬렉션보다 훨씬 빠릅니다 (20ms와 1685ms, 즉 800X가 더 빠름)하는 이유를 알고 싶습니다. 내가 ObservableCollection에의 내부를 보았고, 그래서 여기에 무슨 ObservableCollection 데이터 바인딩 성능

public Collection() 
{ 
    this.items = new List<T>(); 
} 

가 저장 컬렉션 개체 (나는 반사경을 사용하고 생성자에서 이것을보고)의로이 목록을 사용?

답변

8

이 기사의 비교는 두 번의 단순 바인딩 작업 사이에있는 것이 아니며, 이러한 측정은 List<T> 또는 ObservableCollection<T>에 이미 바인드 된 WPF ListBox에 단일 항목을 추가하는 시나리오를 참조합니다. 저자 발언으로

는 :

... CLR은 List<T> 객체 자동으로 수집 변경 이벤트를 발생시키지 않습니다. 하기 위해 변경 사항을 적용하기 위해 ListBox를 얻을, 당신은 직원의 목록을 다시하고는 ListBoxItemsSource 속성에 다시 부착해야합니다. 이 솔루션이 작동하는 동안 은 성능에 큰 영향을줍니다. 은 때마다 당신은 ListBox 첫 번째는 이전 항목을 멀리 던져 전체 목록을 다시 생성, 새로운 객체에 ListBoxItemsSource 를 재 할당.

성능 차이가 설명되어 있습니다. ObservableCollection<T>List<T>에 의해 뒷받침 되더라도 INotifyCollectionChanged 인터페이스를 구현하므로 모든 추가 처리가 필요하지 않습니다.

+2

더 정확하게 INotifyCollectionChanged가 ObservableCollection에 의해 구현되었습니다.

+0

브라이스 - 고맙습니다. –

+0

목록이 이고 항목이 ObservableCollection 인 항목이 1000 개라면 동일한 시간이 걸릴 것입니다. 맞습니까? 말된다. – Jose

관련 문제