gpt4 book ai didi

ios - 仅在 iPhone 5 上无法解释的帧率下降

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:17:18 24 4
gpt4 key购买 nike

我有一个 iOS 应用程序,它从设备相机抓取帧并进行一些 CPU 密集型图像处理。在 iPad 2、iPad 3 和 iPhone 4s 上,应用程序以每秒 30 帧 (fps) 的速度愉快地运行。我最近在 iPhone 5 上对其进行了测试,大部分时间它以 30 fps 的速度运行。偶尔我注意到它下降到 15 fps 左右,这是我在其他设备(据称硬件速度较慢的设备)上从未体验过的。我一直在努力追踪这个问题,我学到了很多东西但没有找到解释。以下是我的一些观察结果,它们可能会为正在发生的事情提供线索:

  • 它只发生在 iPhone 5 上
  • 尝试在手机上分析应用程序时无法重现问题
  • 该应用程序在多个线程上运行,抓取帧并将图像转换为我需要的格式在单独的线程上运行以进行密集的图像处理。抓帧线程永远不会低于 30fps,只有图像处理线程会下降。这意味着我的问题不是由于相机帧率因某种原因(例如光线不足)而下降所致。
  • 我倾向于通过启动应用程序、按下 iPhone 的待机按钮、按下主页按钮并返回到应用程序来重现问题。如果我重复此操作 3-6 次,问题通常会发生(但并非总是如此)。
  • 似乎与 iOS 6.0 无关,它在装有 iOS 6 的 4s 上运行良好。
  • 出现问题时,即使关闭应用程序并重新启动它通常也无法恢复帧率(这表明它是与 iPhone 5 相关的应用程序之外的问题)。
  • 将手机连接到我的电脑并重新构建应用似乎总能解决帧率问题。

这很奇怪。会不会是 iPhone 5 有时会降低手机的时钟速度以延长电池生命周期(iPad 和 iPhone 4s 不会这样做)?

我很想听听任何有类似经历的人的意见。

我的应用程序在 iPhone 5 上不应该看起来更糟它应该看起来更好!

非常感谢,

凯文

更新

我做了更多的测试,但仍然没有发现问题。这是我尝试过的。

  • 我已经删除了线程
  • 我已经删除了我使用的一些第三方
  • 删除所有日志记录
  • 试图在仪器中重建但失败了。仪器没有出现这个问题

我已经没有想法了。想听听任何人在 iPhone 5 上遇到帧率下降的情况吗? iPhone 5 有省电模式吗?

最佳答案

最可能的原因是你的代码中的竞争条件,它只会被 iPhone 5 上的特定时间触发。我会四处寻找你有资源争用的地方,并确保你正确地处理它们,尤其是在您执行超时的任何地方(因为您没有完全死锁或崩溃)。

您提到您在多个线程上运行。您是说您正在使用 NSThreadperformSelectorInBackground:NSOperation 还是 GCD?直接使用 NSThread 是线程和资源问题的常见原因,因为使用它比使用 NSOperation 或 GCD 更难正确地做事。

如果您曾经调用过 performSelectorInBackground:,我会高度怀疑这段代码,因为这个调用非常容易被错误使用(而且应该永远不会被使用)。离开应用程序并重新启动它往往会导致问题,这一事实尤其让我怀疑您是在 View Controller 中手动生成线程(这是一个常见的错误)。 performSelectorInBackground: 的问题在于,没有简单的方法可以知道您已经为此生成了一个线程。因此,您最终可以得到比预期更多的线程。

与所有性能相关的东西一样,您应该从 Instruments 开始。请特别注意时间分析器和线程工具。

这种问题的另一个比较常见的原因是:审核您对 NSLog 的使用。它非常慢且同步。在多个线程上运行它会显着影响性能。

关于ios - 仅在 iPhone 5 上无法解释的帧率下降,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13862743/

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