【问题标题】:Profiling C++ code running on iOS device using instruments使用仪器分析在 iOS 设备上运行的 C++ 代码
【发布时间】:2012-10-14 10:06:33
【问题描述】:

我正在尝试使用仪器分析在设备上运行的一些信号处理代码。代码是用 C++ 编写的。下面是几秒钟的输出数据分析。 . .

很明显,对 powf 的调用占用了大部分 CPU 时间,但是,我找不到如何确定对 powf 的哪些调用是我的代码中最大的问题。我发誓,当我以前使用 Shark 时,在源中获取呼叫的行号真的很容易。我能从仪器中得到的只是机器代码的废话。

扩展powf 三角形得到以下结果。 . . .

【问题讨论】:

  • 点击 powf 旁边的三角显示来查看调用者。
  • 只是调出大量嵌套的无意义内存地址列表
  • 听起来您的某些代码(可能是库)没有符号?
  • 我所有的 DSP 代码都是用普通的旧 STL 编写的
  • 当然,但是您是如何构建代码的?有图书馆吗?图书馆是否有符号,或者您是否正在剥离它?

标签: c++ ios profiling instruments


【解决方案1】:

似乎包含对powf 的调用的代码是您传递给CoreAudio 的回调函数的一部分。 Instruments 似乎无法表示回调的调用链,因此您只是在代码中看到原始地址。 可能可以使用合适的工具(例如otool 或类似工具)识别这些地址,但从长远来看,更好的策略是实现一个测试工具,该工具会调用您的回调代码带有虚拟数据的循环 - 当您将其用于未来的调试和分析活动时,这很可能会自我回报。请注意,为方便起见,您可以将测试工具构建为 Mac OS X 可执行文件以进行分析/调试,因为两个平台上的错误和性能瓶颈很可能是相似的,至少初步近似。

【讨论】:

    猜你喜欢
    • 2013-02-02
    • 2015-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-27
    • 1970-01-01
    • 1970-01-01
    • 2010-09-27
    相关资源
    最近更新 更多