1

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

在此处输入图像描述

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

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

在此处输入图像描述

4

1 回答 1

1

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

于 2012-10-24T13:10:57.283 回答