使用仪器对性能进行基准测试

时间:2012-10-21 14:28:01

标签: iphone objective-c ios performance cocoa

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

我应该注意到我的应用程序没有网络组件,因此在获取数据时瓶颈不是 - 它都在加载新视图时。

当我努力改进这一点时,我需要对转换进行基准测试,以便我可以评估我的增强功能的效果。观看了WWDC会议后,我了解了时间分析器的基本知识,但我并不相信我正在寻找合适的东西。

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

enter image description here

当我深入到我的代码时,我的困惑就出现了。我发现最大的贡献者之一(23毫秒)是一个只使用sortedArrayUsingDescriptors的小例程。我无能为力。其他时候根本原因是我使用CGRectInset - 几毫秒。我想我希望看到更多与图像使用相关的东西。

我想我不知道我是否正确对待正确的事情。我真的打算尝试将我的6ms操作减少到5ms并期望看到差异吗?我正在寻找合适的工具来诊断我的问题吗?

任何有关衡量内容和重点工作的提示或说明都将非常有价值。

1 个答案:

答案 0 :(得分:1)

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