ObservableCollection数据绑定性能

我想知道为什么根据这篇文章和可观察集合比WPF中的List 集合明显更快地绑定(20毫秒vs 1685毫秒,这比800倍快)。 我查看了ObservableCollection的内部,它使用List作为它的存储集合对象(我使用了反射器并在构造函数中看到了这个)

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

那么这里发生了什么?

该文章中的比较不是在两个简单的绑定操作之间进行的,这些测量是指将一个项目添加到已绑定到ListObservableCollection的WPF ListBox的场景。

正如作者所说:

… CLR List对象不会自动引发集合更改事件。 为了让ListBox获取更改,您必须重新创建员工列表并将其重新附加到ListBoxItemsSource属性。 虽然此解决方案有效,但它会带来巨大的性能影响。 每次将ListBoxItemsSource重新分配给新对象时, ListBox首先抛弃其先前的项并重新生成其整个列表。

这解释了性能差异。 尽管ObservableCollectionList ,但它实现了INotifyCollectionChanged接口,这使得所有额外处理都不必要。