【问题标题】:Could Xcode affect app performance while debugging?Xcode 在调试时会影响应用程序的性能吗?
【发布时间】:2018-09-29 20:52:07
【问题描述】:

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

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

【问题讨论】:

    标签: ios swift xcode scenekit metal


    【解决方案1】:

    默认情况下,Xcode 启用 Metal 验证层。这对您如何使用它来捕获不正确的用途进行了一系列额外的检查。额外的检查很慢,这就是为什么除非启用验证,否则 Metal 不会执行此操作。

    这可以在 Xcode 的 Scheme 编辑器中更改。这是 Apple 的 Metal Programming Guide 中的 documented

    【讨论】:

      【解决方案2】:

      A nice tutorial on iOS Assembly。这可能对主题很有见地

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

      还可以查看 answer 关于更改优化级别的信息。

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 2019-06-19
          • 1970-01-01
          • 2022-08-04
          • 1970-01-01
          • 1970-01-01
          • 2011-06-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多