5

我正在寻找一些关于如何使用 Instruments 的 Time Profiler 来增强特定操作的建议。我有一个分页滚动视图,可以按需加载其内容。当滚动到一个新页面时,另一个页面会向右加载两页。当当前页面滚动到屏幕的 50% 时会发生这种情况,并且在较慢的设备上,加载足以成为瓶颈,会中断滚动的平滑度。滚动感觉就像它在 50% 品脱时非常短暂地暂停,然后又重新开始行动。

我应该注意,我的应用程序没有网络组件,因此在获取数据时不会出现瓶颈——这一切都在新视图的加载中。

在我努力改进这一点时,我需要对过渡进行基准测试,以便评估我的增强效果。观看了 WWDC 会议后,我了解了时间分析器的基础知识,但我不确定我正在寻找正确的东西。

我正在运行仪器,然后执行滚动。我看到 CPU 活动的预期峰值。然后我选择尖峰并查看符号名称。正如您在下面看到的,当我隐藏系统库并显示 Obj-C 时,我正在处理一个短暂的 90% 峰值,运行时间为 81.0 毫秒。

在此处输入图像描述

当我深入研究我的代码时,我的困惑就来了。我发现最大的贡献者之一(23 毫秒)是一个只使用sortedArrayUsingDescriptors. 我对此无能为力。其他时候,根本原因将是我使用 CGRectInset - 几毫秒。我想我希望看到更多与图像使用或类似的东西有关。

我想我不知道我是否在对正确的事物进行基准测试。我真的打算尝试将我的 6ms 操作减少到 5ms 并期望看到不同吗?我是否正在寻找正确的工具来诊断我的问题?

任何关于衡量什么以及将我的工作重点放在哪里的提示或说明都会受到真正的重视。

4

1 回答 1

1

考虑使用大型中央调度在后台线程上尽可能多地完成非 UI 工作(获取、排序、选择等)。这将利用多 CPU 机器的强大功能,让您更快地离开主线程。仅根据需要使用主线程进行 ui 工作。

于 2012-11-05T06:09:52.487 回答