【发布时间】:2011-03-30 23:30:20
【问题描述】:
我有一个应用程序,它显示我保存到应用程序的图像缩略图,然后用户点击缩略图,他们会看到一个完整尺寸的图像,他们可以浏览(类似于照片应用程序)
我注意到的问题是,当我从 UIImagePicker 添加图像,然后再次点击缩略图时,CPU 会跳到 140-150%(或更高)并停留在那里。
只有当我通过选择器将新图像保存到文档目录时,我才能每次都复制它。
我正在使用活动监视器查看 CPU%。我很好奇是否有其他人遇到过类似的情况,或者对可能导致这种情况的原因有任何想法。这可能只是我对活动监视器工具的误解。
感谢您的宝贵时间。
【问题讨论】:
-
解码图像可能是一项计算密集型任务,具体取决于分辨率。你是什么意思利用率保持在 100%,它永远不会下降?曾经吗?
-
我只是再次测试。这是我的步骤。 (即使有一张或两张图片也会发生)我从图像选择器中选择一张,将其保存到文档目录,然后当我选择缩略图并转到 ScrollView 时,CPU 利用率飙升 180+ 并一直保持在那里,直到我关闭应用程序关闭。如果我不保存任何图像,CPU 只是略微上升,然后又回到 0,我添加图像的那一刻,它只是保持很高。
-
附带说明,我看到超过 100% 的 CPU 使用率的原因是因为我在 iPad 2(双核)上进行分析。我在 3G 上测试过,峰值高达 80+%,这真的很奇怪,因为它只有在我添加图像后才会这样做。
-
好的,另一个更新。在我的保存图像过程中,我使用 NSInvocationOperation 调用我的保存图像方法。我删除了它,并通过直接调用我的方法来保存图像,并且它不会保持 CPU 使用率很高(保存后它实际上会回落到 0%)现在我只需要弄清楚为什么会这样 :-)
-
一如既往,Instruments 是解决此类性能问题的最佳工具。特别是,我会对正在运行的应用程序使用 Time Profiler 来查看它在哪里花费的时间最多。向调用者收取您不认识的方法和库(通过右键单击它们),并且应该清楚罪魁祸首在这里。您还可以在 Instruments 中缩小时间范围,先查看在初始图像拾取过程中发生的情况,然后再查看后续情况。
标签: iphone memory ios4 cpu cpu-usage