【发布时间】:2012-06-28 08:58:53
【问题描述】:
我正在使用 C++ 进行一些数字运算,在我的调试版本中使用 -Os 优化时,我发现 CPU 百分比使用率存在巨大差异。因此,我想在启用优化的情况下分析我的代码,这样我就不会浪费时间优化编译器已经优化好的代码。
当我尝试使用 -Os 优化进行分析时,我无法让 Instruments 符号化我的代码(即使我手动指定了 .dSYM 文件的位置)。它甚至不会显示我没有模板化或内联的顶级 C++ 成员函数。
当我指定默认的-O0优化级别时,我可以让它很好地表示。
那么,是否可以在启用优化的情况下进行分析?如果是这样,那么让它发挥作用的诀窍是什么?
我正在使用 XCode 4.3.3。
【问题讨论】:
-
我的评论是,一般来说,作为程序员,您将在比编译器更高的级别上进行优化,例如使用正确的数据结构、延迟加载或其他任何东西,而编译器将内联方法、展开循环等。所以我认为你不会在关闭编译器优化的情况下浪费时间进行优化,你不会优化与编译器相同的东西。
-
@JonoB:考虑这种情况(这与我的情况很接近)。在优化之前,在我最里面的循环中,
StepA()需要 100 毫秒,StepB()需要 100 毫秒。优化后StepA()耗时10ms,StepB()耗时50ms。如果没有启用优化的分析信息,我怎么知道我应该把精力集中在StepB()。 -
您使用的是什么编译器/xcode 版本?我经常使用 -Os 或更高版本(在发布版本中)进行分析。
-
@EmileCormier 我猜你真的不知道。根据我的分析经验,瓶颈在哪里,编译器优化与否通常很清楚,但显然情况并非总是如此。
标签: iphone ios xcode profiling instruments