0

我目前正在从事与图像处理相关的 iPhone 项目,并使用 Debug Builds 在设备上运行了我的初步测试。至少可以说,性能令人失望。当我切换到发布版本时,性能突然变得非常好。

从我作为 Windows 开发人员的经验来看,我从未见过从切换到发布模式获得如此巨大的收益(发布与调试相比快几个数量级)——尤其是对于将大部分繁重工作留给 iOS 本身的应用程序而言。有人愿意解释为什么 MonoTouch 在发布模式下要快得多吗?

4

1 回答 1

1

可能有几个原因,你没有提供很多细节。最常见的原因是:

  • 首先,明显的代码在调试配置下没有优化,因为一些优化使调试更加困难;

  • 与发布版本相比,调试版本还需要生成额外的代码(比较您的本机可执行文件的最终本机可执行文件大小,以便您了解它可以代表多少);

  • 调试符号(.mdb 文件)将在运行时加载。这会减慢应用程序的启动速度,但所需的额外内存也会影响某些应用程序;

  • 托管链接器在发布版本中删除 UIKit 绑定中的所有 UI 线程检查(即它们仅在调试版本中执行,并且只会抛出)。如果您的应用程序在检查线程安全的代码上循环,这可能会很昂贵(在调试中) 。

如果您有其他不同的选项,除了启用debug之外,在您的DebugRelease配置之间,它们也可能对性能产生影响。例如

  • 可以选择使用LLVM 优化编译器来完成发布构建。那是一个不同的 AOT 引擎,它将为您提供更小更快的本机可执行文件(但需要更多时间来编译);

如果您想要特定于您的应用程序的答案,您应该使用 Apple Instruments 可以比较调试和发布版本。

于 2013-06-21T15:46:56.740 回答