ios – 如何显示Instruments Time Profiler中调用的功能的次数

我尝试了所有可能的字段,但找不到函数调用次数.

此外,我不会得到自我和#自我.这两个数字是什么意思?

解决方法

还有其他几种方法可以实现这一点.显然,创建一个静态命中计数器和一个发出和递增一个计数器的NSLog.这是侵扰性的,我找到了一种方法来做到这一点与lldb.

>设置断点
>执行程序,直到您第一次点击断点,并记下您所击中线路右侧的断点号(例如“线程1:断点7.1”,请注意7.1)
>上下文单击断点,然后选择“编辑断点”
>将条件留空并选择“添加操作”
>选择“调试器命令”
>在命令框中,输入“断点列表7.1”(使用断点从第2步开始).我相信你可以使用“信息中断”,如果你使用gdb.
>检查选项“评估后自动继续”

>继续

现在,而不是停止,llvm将发出关于断点的信息,包括它已经被传递的次数.

至于Glenn和Mike之前的答案中的讨论,我将描述一个性能问题,其中函数执行计数是有用的:我的应用程序中有一个特定的操作,其中性能在每次执行操作时都显着降低.仪器时间分析器显示,每次执行操作时,特定功能都要花上两倍的时间,直到应用程序如果重复执行操作才能挂起.通过计数,我能够确定每次执行时,该函数调用次数是之前执行次数的两倍.那么很容易找到原因,原来是有人在每个事件执行时在NotificationCenter中重新注册通知.这具有将每个执行的响应处理程序调用次数加倍的效果,从而使函数的“成本”增加一倍.知道它是双倍的,因为它被称为两次,而不是因为性能只是越来越糟糕,使我看看调用序列,而不是因为功能本身可能会随着时间的推移而退化.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...