gpt4 book ai didi

iphone - 一段时间后性能会下降,尤其是当设备处于休息状态时

转载 作者:行者123 更新时间:2023-11-29 03:41:02 24 4
gpt4 key购买 nike

我有一个iPhone游戏,使用Unity游戏引擎和自编写的库来访问Apple的Core Motion框架。在 iPhone 5 上性能非常出色,过去在 iPhone 4 上性能也相当不错。

今天在 iPhone 4 (iOS 6.1.3) 上运行我的应用程序,一段时间后帧速率持续下降(5-10 分钟后明显)。大约 20-30 分钟后,游戏几乎无法玩,并且似乎以慢动作运行。

奇怪的是:这种效果尤其是当设备静止放在 table 上时会发生。 当我移动设备时,帧速率明显上升,但在没有移动时再次下降。我发现这并不是用 C#(Unity 游戏引擎)编写的游戏代码造成的,而是用 Core Motion 处理运动控制的 Obj-C 部分造成的。

我认为问题是在我从 iOS 5.1.x 更新到 iOS 6.1.3 时开始的,但我不确定。很难确定问题开始出现的修订历史记录的确切时间,因为我在精美的 iPhone 5 上进行了所有较长的测试,而在 iPhone 4 上进行了快速测试(好吧,吸取了教训;-)。

我使用“旧式”拉取方法来获取 CMDeviceMotion 实例,即 startDeviceMotionUpdates没有 block 处理程序。拉取代码在单独的线程中运行,事实证明这是最有效的方式 - 嗯,在过去。

Unity内置的iOS分析器(控制台)没有显示显着的内存消耗,但我认为统计中没有考虑 native 代码插件。据我所知,Xcode 分析器也没有显示任何泄漏。只是大量的内存分配和释放,这让我有点惊讶(我认为轮询时内部回收 CMDeviceMotion 实例可能会更快,但谁在乎呢)。


问题:此星座在 iOS 6 上是否存在任何已知问题?我的意思是,拉动,在单独的线程中运行,60 Hz,结合 Unity 游戏引擎 + Open GL ES 2,...

最佳答案

终于找到了罪魁祸首:deviceMotionUpdateInterval
更准确地说,经常更改间隔

根据Choosing a Motion Event Update Interval in Event Handling Guide for iOS部分较大的间隔可延长电池生命周期。因此,我实现了一些逻辑,以在游戏不活动时将频率减慢至 2Hz,即游戏结束、暂停、主菜单...当恢复游戏时,频率再次设置为 60 Hz。

注释掉更改频率的代码后,问题消失了。所以我决定不再尝试以这种方式节省电池消耗。

关于iphone - 一段时间后性能会下降,尤其是当设备处于休息状态时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18440341/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com