2

我正在使用 C++ 进行一些数字运算,并且-Os在我的 Debug 构建中使用优化时,我发现 CPU % 使用率存在巨大差异。因此,我想在启用优化的情况下分析我的代码,这样我就不会浪费时间优化编译器已经优化好的代码。

当我尝试使用-Os优化进行分析时,我无法让 Instruments 符号化我的代码(即使我手动指定了.dSYM文件的位置)。它甚至不会显示我没有模板化或内联的顶级 C++ 成员函数。

-O0当我指定默认优化级别时,我可以让它很好地表示。

那么,是否甚至可以在启用优化的情况下进行分析?如果是这样,那么让它发挥作用的诀窍是什么?

我正在使用 XCode 4.3.3。

4

1 回答 1

2

Time Profiler 确实在使用-Os. 优化器的工作做得非常好,以至于我的 C++ DSP 代码被内联并加速到分析器不会在我让它运行的短时间内对其进行采样的地步。我在调用树中只能看到系统调用。

当我尝试运行探查器更长时间时,探查器捕捉到了我的 DSP 代码的一些亮点。它只显示了一些 NSOperationQueue 处理程序调用的顶级 DSP 函数。下面的其余部分似乎都是内联的。

当我使用-O2. 我的更多 DSP 子程序保持原样(而不是内联),因此我能够更好地判断我的 DSP 算法在哪里花费时间。但这一切都没有实际意义,因为现在我可以看到该应用程序在管理系统调用上花费的时间比在我的 DSP 代码上花费的时间要多得多。

于 2012-06-27T00:50:13.527 回答