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