Xcode Instruments跟踪比较

9
有没有办法比较使用Instruments保存的跟踪文件。我如何比较应用程序连续发布版本之间的任何方式。
假设我发布了iPhone应用程序版本1.0,然后在2个月内发布1.1。在内存和时间方面进行分析比较的最佳方法是什么?
2个回答

3
你可以保存跟踪文件。但是,为了在将来的某个日期合理地解释这些结果,有必要在跟踪中插入“标志”,以标记重要事件,从而使您可以在跟踪的显着点告诉应用程序正在做什么。
过去,我建议通过编程插入标志,以便您将来有一些比较基础,但这在iOS7中已经失效了。但是,如果您在早于7.0的iOS模拟器上运行此操作,则可以:
  • Add DTPerformanceSession.framework to your project;

  • In your source:

    #import <DTPerformanceSession/DTSignalFlag.h>
    
  • Then, in your source, you can programmatically insert flags in Instruments (when running on pre iOS7 simulator):

    // Point flag (just an event in time)
    DTSendSignalFlag("some event", DT_POINT_SIGNAL, TRUE);
    
    // Start flag (to mark the start of something)
    DTSendSignalFlag("start some intensive process", DT_START_SIGNAL, TRUE);
    
    // End flag (to mark the end of something)
    DTSendSignalFlag("end some intensive process", DT_END_SIGNAL, TRUE);
    
  • Remove DTPerformanceSession.framework from your project (the process of adding it let Xcode resolve the header, but you don't want to keep it in your iOS project or else you'll get linking errors).

您可能希望保留相应的档案副本,以便将来可以重新符号化跟踪文件。

显然,在iOS7中进行分析时,您可以手动添加标志,但这并不像编程方式那样优雅或严谨。


谢谢您的回复,不幸的是我的应用程序只支持iOS 7。您所说的是,为了查看跟踪差异,我必须手动查看这些连续构建的跟踪内容。难道没有针对跟踪文件的“自动比较差异”吗?否则,跟踪内存和时间分析似乎只能手动完成。 - user3017495
完成此操作后,您需要转到“窗口”>“管理标志”,然后选择显示信号标志,否则您将无法看到它们。 - Dov
在较新的操作系统版本中,我们现在可以使用“兴趣点”。https://dev59.com/3mMk5IYBdhLWcg3wvARo#39416673 - Rob

2
我认为最好的方法是:
  1. 将两个版本的App安装到设备上。
  2. 打开Instruments
  3. 点击“Library”按钮并添加您想要跟踪的内容。对我来说,它看起来像这样:

    • 活动监视器
    • 分配
    • 时间分析器
    • 网络活动
    • 内存监视器
  4. 选择您的iOS设备作为目标。然后选择要测试的应用程序。

  5. 在两个版本的应用程序上依次运行相同的场景。
  6. 现在您可以看到2个类似运行的比较结果。
  7. 只需单击任何行以查看运行的详细信息。

我仍在寻找自动化这些步骤并自动获取一些主要评论的方法。但现在这是我知道的最佳方法。

希望它有所帮助。

对我来说,它看起来像这样:

xcode-instruments-trace-comparison


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接