当我的 iPhone 上的 iOS 应用程序转向效率核心时,其性能会下降

Tom*_*son 5 xcode multicore multiprocessing ios swift

我正在 Xcode 12.4 和 iOS 14.3 上开发一个实时视觉处理应用程序,遇到一个问题:在运行一段随机时间后,该应用程序停止使用我的 iPhone 的性能核心并切换到效率核心。这伴随着 FPS 的显着下降。用于大量 CPU 工作的队列(通过 cgContext 渲染,然后使用 CIImage(cgImage) 转换)如下:

private let dataOutputQueue = DispatchQueue(label: "video data queue", qos: .userInteractive, attributes: [.concurrent], autoreleaseFrequency: .workItem)
Run Code Online (Sandbox Code Playgroud)

我很惊讶 .userInteractive 队列会转移到这样的效率核心,因为它无法跟上。

我的问题是,为什么性能核心会像这样停止工作?我不能假设我可以保留使用性能核心吗?附上仪器图片供参考。

仪器图片

小智 1

我遇到了这个确切的问题(与上面相同的仪器跟踪),并且没有找到可以修复的代码解决方案。但是,我只能在 iOS 14.x 上重现。在 iOS 15.1 中,这似乎不再是问题。

对我来说,这是非常确定的,负载 45 秒 +/- 1 秒后减速,关闭 5 秒 +/- 5 秒,然后反弹。每次在 iOS 14.x 上运行时都会发生这种情况,但我还没有看到它在 iOS 15 中发生。

我已提出 Apple 技术支持请求,如果他们回复,我会更新。