在iPhone SE上,在升级到CPU11.4之后,我现在看到一个非常奇怪的iOS节流结果,大约在8-10秒之后。我正在使用一个非常简单的示例应用程序(Deployment Target设置为iOS 10.3),它显示单个视图,并在对drawInMTKView的调用中执行解码操作。当应用程序启动时,CPU使用率与预期相同(10-15%),但在8-10秒的窗口之后,CPU似乎大幅减速,因此在CPU全速运行时需要4-5ms的帧解码操作将花费16-17ms (CPU使用率约为60%)。我尝试通过切换iOS标志来禁用任何idleTimerDisabled空闲计时器,但这似乎对此没有任何影响。有趣的是,从纵向旋转到横向旋转将重置此节流,解码将再次全速运行,直到8-10秒的不活动再次抑制它。这到底是怎么回事?我已经读到iOS 11包含一些新的电池管理代码,但我的设备是新的,并且通用->电池中的电池设置表明设备正在全速运行。是否有其他应用程序标志或设置可以禁用此限制?
(full speed)
decode time 5.74 ms
decode time 5.87 ms
decode time 5.37 ms
decode time 5.81 ms
decode time 5.56 ms
decode time 5.97 ms
(after 8-10 second, reduced speed)
decode time 16.65 ms
decode time 16.65 ms
decode time 17.02 ms
decode time 16.49 ms
decode time 16.95 ms
decode time 16.03 ms
发布于 2018-11-25 07:32:44
这可能与您的经验相关:我们发现,分析应用程序的行为可能会在不合适的时候欺骗这些版本的iOS进行降频。在未连接到主机PC的发布版本中不会出现此问题。
我们有一个应用程序,它的渲染循环运行时间不到8ms -远远低于60fps游戏所需的约16ms。当连接到分析器时,目标设备将检测到这一点并关闭时钟-但与分析器通信的开销将使帧时间超过16ms,从而导致30fps的游戏。
除了认识到它正在发生并考虑到它之外,我们找不到任何解决方案。当我们将额外的渲染负载添加到应用程序中时,将其推到8ms以上,问题就消失了,因为目标设备不再降频。
https://stackoverflow.com/questions/52727578
复制相似问题