超2万行数据时Diffable Datasource性能异常问题问询
Diffable Datasource处理22000条量级数据集的性能问题
我在使用Diffable Datasource处理约22000条的大数据集时遇到了性能问题,开启动画时应用snapshot的耗时远超预期,相关代码如下:
let shouldAnimate = tableView.numberOfSections != 0 apply(snapshot as NSDiffableDataSourceSnapshot<String, NSManagedObjectID>, animatingDifferences: shouldAnimate)
目前我已验证关闭动画(效果同reloadData)可以带来一定的性能提升。我的疑问是:应用snapshot本身是O(n)复杂度操作,请问是我有遗漏的优化点,还是Diffable Datasource本身无法更快处理该量级数据?
相关说明与更新
- 本示例代码基于公开的SwiftLee Diffable Data Source搭配Core Data相关技术文章搭建
- 已有Jesse Squires发布的Diffable Data Source在iOS15上的行为变更、Cell重配置相关公开内容可作参考
- 2021年9月2日更新:已有公开的Twitter技术讨论涉及该问题
- 补充优化方案:若请求搭配NSFetchedResultsController使用,可尝试移除fetchBatchSize设置实现优化,避免使用该参数时出现不必要的fetch操作
内容的提问来源于stack exchange,提问作者Zsolt
相关产品推荐
相关产品推荐

