Xcode 在调试时会影响应用性能吗?



我有一个在 SceneKit + Metal 上用 Swift 编写的应用程序。当我从Xcode fps构建和运行应用程序时,计数器显示40fps。但是,如果我通过点击跳板上的图标自己运行该应用程序 fps 计数器会显示 60fps。怎么可能?Xcode 在调试时会以某种方式影响应用程序性能吗?我不知道这一切是如何工作的,但我想可能有一些钩子可以调试正常工作,这会影响性能。如果是这样,我可以选择加入吗?

我知道调试和发布版本有不同的构建标志,但我不制作发布版本。从 Xcode 运行时的同一调试版本与在手机上手动运行应用程序时的性能不同。

默认情况下,Xcode 启用 Metal 验证层。这会对你如何使用它来捕获不正确的用法进行大量额外的检查。额外的检查很慢,这就是为什么 Metal 除非启用验证,否则不会这样做。

这可以在 Xcode 的 Scheme 编辑器中更改。这在Apple的Metal Programming Guide中有记录。

一个关于iOS汇编的好教程。这可能对这个话题很有见地

如前所述,这是因为编译器处于调试模式,这意味着不会进行任何优化。如果打开优化,则会看到生成的函数要小得多。

并查看有关更改优化级别的答案。

我在方案编辑器中尝试了不同的选项,发现Debug executable复选框会影响我的情况。所以我对调试器的假设是正确的,但我以前不知道那个复选框。

最新更新