我的项目是一个商业项目我不能在这里发布,但是代码过程是:
- GetAll(LINQ)
- 过滤(Linq)
- 将 IEnumerable 结果传递给 RecyclerView Adapter
- 适配器将 IEnumerable<> 转换为 List<>
- 适配器为 ItemCards 充气
对 #4 的性能影响很大,在大约 3k 项上最多需要 3 秒。
如何降低性能影响?
我注意到如果我只是创建一个 new List<>(3000)
, 它也需要大约 1.5 秒。
或者我不应该使用列表?
如果我们不使用 List<>,Adapter 如何通过 [position] 获取数据。
How to go to particular Item in IEnumerable
ElementAt()
让我的应用程序在膨胀时完全死掉。似乎可以 ToList()
在每个项目。
最佳答案
我自己找出问题:
3.pass IEnumerable result to RecyclerView Adapter
不要将 Ienumerable 传递给 Adapter,否则,它会在每个项目处重新查询。改为传递列表。
关于c# - 我面临着对 IEnumerable(LINQ) > List(RecyclerView) 的巨大性能影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40581687/