ios - UICollectionView 低帧率

标签 ios performance frame-rate collectionview

我有一个显示 3 个图像、两个标签和 1 个属性字符串的 Collection View (字符串具有不同的颜色和字体大小,每个单元格的值不是唯一的)。其中一张图片来自网络,我使用 AFnetworking 进行下载和缓存。 Collection View 同时显示 15 个单元格。

当我滚动时,我只能达到 25 帧/秒。

下面是我做的事情: - 数据处理提前完成并缓存到对象 -图像和 View 是不透明的 -单元格和 View 被重用

我已经完成了所有我知道的优化,但我无法达到至少 55 帧/秒。

如果您可以分享其他技术来加速细胞的重用。

我什至考虑在屏幕外预渲染 subview 并将其缓存在某个地方,但我不确定它是如何完成的。

当我在 iPhone 上运行应用程序时,它很快,因为它一次只显示至少四个单元格。

最佳答案

您需要做的第一件事是启动仪器并确定您是否CPU 受限(计算或常规 I/O 是瓶颈)或GPU-bound(显卡正在苦苦挣扎)。 .根据其中哪一个是问题,解决方案会有所不同。

这是一个 video tutorial这显示了如何执行此操作(除其他外)。 .这个来自 Sean Woodhouse @ Itty Bitty Apps(他们制作了很好的 Reveal 工具)。

注意:在性能调整的上下文中,我们通常将 I/O 绑定(bind)或 CPU 绑定(bind)作为单独的问题来讨论,但是我在这里将它们组合在一起,意思是“由于计算速度慢或 I/O 数据未获取足够快的显卡”。 .如果这确实是问题所在,那么下一步就是找出它是否确实与等待 I/O 或 CPU 已用尽有关。

乐器一开始可能真的让人困惑,但上面的视频帮助我驾驭它的力量。

这是来自 Anthony Egerton 的另一个很棒的教程.

关于ios - UICollectionView 低帧率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20882426/

相关文章:

ios - 如何在展开之前分配这些对象?

ios - 从函数返回不同类型的数组内容

WPF:将项目添加到 ListView 的最有效/快速的方法是什么?

javascript - 如何测量nodejs中异步函数的执行时间?

iOS 中的 C++ 开发问题

ios - 向 UIView 添加渐变的现代技术

c# - 过滤 ICollectionView<object> 时性能下降

javascript - 合并网格会降低 FPS

java - 处理/罗技C920采集帧率视频话语

c++ - 使用 delta 变量 C++ 限制 while 循环在 30 "FPS"处运行