MonoTouch在Debug与Release版本中的设备性能

时间:2013-06-21 15:22:20

标签: xamarin.ios

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

从我作为Windows开发人员的经验来看,我从未见过如此巨大的收益(在Release vs. Debug中快几个数量级)从切换到发布模式 - 特别是对于一个留下大部分重量的应用程序而言提升到iOS本身。任何人都想解释为什么MonoTouch在发布模式下如此快?

1 个答案:

答案 0 :(得分:1)

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

  • 首先,在调试配置下,明显的代码未经过优化,因为某些优化会使调试变得更难;

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

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

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

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

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

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