是否有适用于iPhone应用程序的非抽样时间分析工具?

时间:2009-09-18 05:43:13

标签: iphone profiling

我已经尝试使用Instruments和Shark来分析iPhone应用程序,但两者都使用数据采样方法,定期拍摄线程堆栈的截图。

我更希望有一个完整的覆盖率分析工具,它将记录每个函数调用以及在函数及其子例程中花费的时间。这似乎比获取样本更直观。像Windows上的AQtime这样的东西会很棒。

所以我的问题是:

  1. 可以信任基于样本的分析,并且与基于函数调用的分析一样有用吗?
  2. 乐器或鲨鱼可以进行此类分析吗?
  3. 是否还有其他可用的工具,哪些更接近我想要的工具?

2 个答案:

答案 0 :(得分:3)

我发现Shark使用的时间分析非常准确,可以确定代码中的瓶颈。通过使用Config | Show Mini Config Editor显示Mini Config编辑器并缩短采样时间,可以将采样间隔调整为更精细。

Xcode 3.2中的乐器现在也有一个很好的Time Profiler乐器,虽然那只是Mac版。我发现仪器适用于分析,但如果系统负载很重,它可能会丢弃样品。一般来说,我从乐器开始,考虑到使用它是多么容易,如果我需要更详细地了解正在发生的事情,请继续使用鲨鱼。

如果你真的想进行基于函数调用的分析,我会看看DTrace。我写了几篇关于使用DTrace herehere调优Cocoa应用程序的文章。后者甚至显示了使用自定义DTrace脚本调整iPhone应用程序启动时间的示例。

不幸的是,DTrace目前还没有在iPhone上运行,但你仍然可以通过在模拟器中运行你的应用程序来收集很多有趣的信息。虽然确切的时序信息将远不及设备上的信息,但确切地知道执行了多少次方法以及以何种顺序可以提供关于优化位置的一些线索。我使用DTrace为Shark和Instruments收集的信息提供不同的视角,并回答有关我的应用程序的具体问题。

答案 1 :(得分:1)

是的,堆栈抽样可能违反直觉,是的,它可以被信任。查看this link和第一条评论。

这不是要问“这需要多长时间?”

这是要求(用一种可疑的声音)“那是纳秒必要吗?”

相关问题