我一直在用Phillip Piper的这个令人敬畏的控制进行一些测试,但我也有一些我无法回答的问题(在烹饪书,源代码示例等等......)。
加载和使用大型列表时FastOlv和VirtualOlv之间的真正区别是什么?
想象一下,仅用于测试目的: 我有一个在FastOlv和VirtualOlv上显示的List。 此列表包含1.000.000个文档(加载到内存中),此列表不可编辑(不添加,删除或更改文档)。
我已将此列表加载到两个OLV并且性能相同,我的意思是,加载时间(例如,在这些OLV上从上到下)是相同的。
在FastOlv上使用VirtualOlv有什么好处? 是否可以在IVirtualListDataSource的实现中为特定情况执行更好的操作?你能分享一些例子吗?
感谢您对此的见解。
鼠星
答案 0 :(得分:4)
VirtualObjectListView
是一个抽象基类,可用于实现您自己的虚拟列表,其内容来自您的数据存储。
FastObjectListView
是VirtualObjectListView
的一种实现,因此对于大型列表而言,它的行为与正常ObjectListView
相比要快得多。
答案 1 :(得分:2)
好问题。您可能需要查看源代码注释。作者并不是非常具体,但阅读评论和代码有助于了解差异。
实际上FastObjectListView
来自VirtualObjectListView
。但它使用FastObjectListDataSource
作为VirtualListDataSource
,而不是VirtualListVersion1DataSource
使用的默认VirtualObjectListView
。两者都派生自AbstractVirtualListDataSource
,但FastObjectListDataSource
覆盖/实现了更多功能,包括搜索和排序等。
基本上看起来FastObjectListView
通过实现与普通VirtualObjectListView
一样的功能来扩展ObjectListView
。它还实现了GroupingStrategy
,您也可以在任何VirtualListDataSource
上手动添加。{/ p>
所以看来,只要您只在列表中显示大量项目,就没有预期的性能差异,因为FastObjectListView
实际上是VirtualObjectListView
并且具有可以增加的功能可以选择使用。