【问题标题】:iOS CPU% stays high after image save图像保存后 iOS CPU% 保持高位
【发布时间】:2011-03-30 23:30:20
【问题描述】:

我有一个应用程序,它显示我保存到应用程序的图像缩略图,然后用户点击缩略图,他们会看到一个完整尺寸的图像,他们可以浏览(类似于照片应用程序)

我注意到的问题是,当我从 UIImagePicker 添加图像,然后再次点击缩略图时,CPU 会跳到 140-150%(或更高)并停留在那里。

只有当我通过选择器将新图像保存到文档目录时,我才能每次都复制它。

我正在使用活动监视器查看 CPU%。我很好奇是否有其他人遇到过类似的情况,或者对可能导致这种情况的原因有任何想法。这可能只是我对活动监视器工具的误解。

感谢您的宝贵时间。

【问题讨论】:

  • 解码图像可能是一项计算密集型任务,具体取决于分辨率。你是什​​么意思利用率保持在 100%,它永远不会下降?曾经吗?
  • 我只是再次测试。这是我的步骤。 (即使有一张或两张图片也会发生)我从图像选择器中选择一张,将其保存到文档目录,然后当我选择缩略图并转到 ScrollView 时,CPU 利用率飙升 180+ 并一直保持在那里,直到我关闭应用程序关闭。如果我不保存任何图像,C​​PU 只是略微上升,然后又回到 0,我添加图像的那一刻,它只是保持很高。
  • 附带说明,我看到超过 100% 的 CPU 使用率的原因是因为我在 iPad 2(双核)上进行分析。我在 3G 上测试过,峰值高达 80+%,这真的很奇怪,因为它只有在我添加图像后才会这样做。
  • 好的,另一个更新。在我的保存图像过程中,我使用 NSInvocationOperation 调用我的保存图像方法。我删除了它,并通过直接调用我的方法来保存图像,并且它不会保持 CPU 使用率很高(保存后它实际上会回落到 0%)现在我只需要弄清楚为什么会这样 :-)
  • 一如既往,Instruments 是解决此类性能问题的最佳工具。特别是,我会对正在运行的应用程序使用 Time Profiler 来查看它在哪里花费的时间最多。向调用者收取您不认识的方法和库(通过右键单击它们),并且应该清楚罪魁祸首在这里。您还可以在 Instruments 中缩小时间范围,先查看在初始图像拾取过程中发生的情况,然后再查看后续情况。

标签: iphone memory ios4 cpu cpu-usage


【解决方案1】:

原来,这是我用来保存图像的 NSInvocationOperation。在我删除它的那一刻,我在所有设备上的性能都得到了极大的提升。

我不知道为什么会这样,但删除它会有所帮助。谢谢大家的cmets。它一直在追查这个问题,直到我确定这是一个内存问题。我必须阅读更多关于 NSInvocationOperation 的内容,以了解我的根本问题是什么。

【讨论】:

    猜你喜欢
    • 2017-08-20
    • 2021-03-30
    • 1970-01-01
    • 2018-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 2021-04-27
    相关资源
    最近更新 更多