我目前正在处理与图像处理相关的iPhone项目,并使用Debug Builds在设备上运行我的初始测试。至少可以说,表现令人失望。当我切换到Release Build时,性能突然变得非常好。
从我作为Windows开发人员的经验来看,我从未见过如此巨大的收益(在Release vs. Debug中快几个数量级)从切换到发布模式 - 特别是对于一个留下大部分重量的应用程序而言提升到iOS本身。任何人都想解释为什么MonoTouch在发布模式下如此快?
答案 0 :(得分:1)
可能有几个原因而且您没有提供很多细节。最常见的常见原因是:
首先,在调试配置下,明显的代码未经过优化,因为某些优化会使调试变得更难;
与发布版本相比,调试版本还需要生成额外的代码(比较本机可执行文件的最终本机可执行文件大小,以便了解它可以代表多少);
将在运行时加载调试符号(.mdb文件)。这将减慢应用程序启动速度,但所需的额外内存也会影响某些应用程序;
托管链接器在发布版本中删除UIKit绑定内的所有UI线程检查(即它们仅在调试版本中执行,并且只会抛出)。如果你的应用程序在检查线程安全的代码上循环,这可能是昂贵的(在调试中)。
如果您的其他选项不同,除了在Debug
和Release
配置之间启用调试之外,它们也可能对性能产生影响。 E.g。
如果您想要一个特定于您的应用程序的答案,您应该使用Apple Instruments可以比较调试和发布版本。