代码之家  ›  专栏  ›  技术社区  ›  squelart

iPhone应用程序是否有非采样时间分析工具?

  •  2
  • squelart  · 技术社区  · 16 年前

    我曾经尝试过Instruments和Shark来评测iPhone应用程序,但它们都使用数据采样方法,定期拍摄线程堆栈的截图。

    因此,我的问题是:

    1. 基于样本的评测是否可以被信任,并且与基于函数调用的评测一样有用?
    2. 仪器或Shark可以进行这种类型的分析吗?
    3. 还有其他更接近我想要的工具吗?
    2 回复  |  直到 14 年前
        1
  •  3
  •   Brad Larson    10 年前

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

    Xcode 3.2中的仪器现在也有一个很好的时间分析器仪器,尽管它只是Mac。我发现仪器可以很好地进行分析,但是如果系统负载很重,它可能会丢失样本。一般来说,我从仪器开始,考虑到它的易用性,如果我需要更详细地了解正在发生的事情,那么就转到Shark。

    如果你真的想做基于函数调用的评测,我会看看DTrace。我已经写了几篇关于使用DTrace调优Cocoa应用程序的文章 here here . 后一个示例甚至显示了使用自定义DTrace脚本调整iPhone应用程序启动时间的示例。

    不幸的是,DTrace目前并没有在iPhone上运行,但通过在模拟器中运行应用程序,您仍然可以使用它收集大量有趣的信息。虽然准确的定时信息与设备上的信息相差甚远,但准确地知道哪些方法执行了多少次以及以什么顺序执行,可以提供一些优化位置的线索。我使用DTrace从不同的角度来看待Shark和Instruments收集的信息,并回答有关我的应用程序的具体问题。

        2
  •  1
  •   Community Mohan Dere    9 年前

    是的,堆栈采样可能违反直觉,是的,它是可信的。看看 this link

    这不是问“这花了多长时间?”

    这是关于问(用怀疑的声音)“那是纳秒吗 必要的