iOS 应用程序在几秒钟后会变慢,如果在调试器中暂停和恢复,则会加速



首先,我能提供的细节并不多,所以我意识到这个问题可能看起来不完整。在这个阶段,我真的在寻找任何想法。坦率地说,我只是对这个感到困惑。

我正在构建一个图形繁重的应用程序,它确实使CPU最大化。根据XCode的说法,设备上的CPU利用率往往在150%左右(我知道这听起来很奇怪,由于设备有两个内核,它似乎可能是200%)。我已经检测了执行最多处理的任务,以便我可以查看它们在调试输出中花费的时间。另请注意,我正在使用 -Ofast(积极的优化)进行编译,即使对于调试版本也是如此。

这是一件奇怪的事情。运行应用程序的 CPU 密集型模式大约 5-10 秒后,一切都变慢了。这是非常明显的。由于我的仪器,我可以看到突然之间,一切都需要大约 3 倍的时间是以前的 3 倍。它在所有任务中都非常统一,并且不会加速。这是真正奇怪的事情。如果我中断调试器中的执行并恢复,我会再获得 5-10 秒的快速执行,然后它再次变慢。

查看XCode报告的CPU和内存使用情况,一切都保持不变。该应用程序在任何时候使用不超过 90MB 的内存。

iOS 是否有一项功能可以减慢 CPU 密集型应用程序的速度或使设备降频以节省电池寿命?我意识到我正在与操作系统共享资源,但这是我每次都可以可靠地重现的行为。

再一次,我意识到我的问题很模糊,而且没有我可以发布的相关代码。欢迎任何关于原因甚至调试方法的想法。

首先,谢谢@thst非常努力地帮助我。我的问题有点愚蠢,因为它真的可以是任何东西。

我最终通过渲染

(通过OpenGL,我忘记包含的一个细节,再次显示我的问题有多糟糕)解决了这个问题,只有当渲染的对象和纹理的状态实际上发生了变化时。它过去一直以 60FPS 渲染。

该应用程序还使用 CIDetector 来检测人脸。我认为,但我不确定,CIDetector 使用 GPU 来执行检测。如果是这样,则可能存在一些对 GPU 资源的争用。CIDetector 在等待时阻止可能会导致整个应用程序变慢。

谢谢大家。

相关内容

最新更新