Ios 是";“运行时间”&引用;CPU使用率“;一个有用的衡量工具下得出什么结论?
使用“”和“”分析iPhone 4上的应用程序,并试图理解它 假设执行时间为8分钟,CPU“运行时间”大约为2分钟。 其中大约67%在主线程上,其中52%来自“自己的代码” 现在,我可以看到大部分时间都花在枚举数组(以及相关工作)、UIKit操作等方面 问题是,我如何从这些数据中得出任何有意义的结论?i、 这里出了点问题,需要解决 我可以看到在运行时间内有很多CPU负载(中值为70%),考虑到应用程序的性质,这是不“合理的” 话虽如此,有些事情确实很突出。在主线程上解析HTTP响应,急切地创建对象(也通过内存分析进行备份) 然而,我在这里寻找的是令人不快的代码以及仅基于CPU运行时间的有用结论。i、 在这里花费“太多”的时间 更新 让我试着详细说明一下,以便更好地了解情况 基于这个应用的功能需求,我不明白为什么它不能在iPhone3G上运行。CPU使用率中位数约为70%,峰值为97%,这看起来就像是iPhone4上的一个危险信号 对此最明显的反应是调查代码并从中得出结论 我希望得到的是以下形式的明确答案Ios 是";“运行时间”&引用;CPU使用率“;一个有用的衡量工具下得出什么结论?,ios,profiling,instruments,Ios,Profiling,Instruments,使用“”和“”分析iPhone 4上的应用程序,并试图理解它 假设执行时间为8分钟,CPU“运行时间”大约为2分钟。 其中大约67%在主线程上,其中52%来自“自己的代码” 现在,我可以看到大部分时间都花在枚举数组(以及相关工作)、UIKit操作等方面 问题是,我如何从这些数据中得出任何有意义的结论?i、 这里出了点问题,需要解决 我可以看到在运行时间内有很多CPU负载(中值为70%),考虑到应用程序的性质,这是不“合理的” 话虽如此,有些事情确实很突出。在主线程上解析HTTP响应,急切地创建对
尽管如此,在主线程中解析http响应可能是个坏主意。在开发演示文稿中,苹果公司指出,虽然CPU使用率不是模拟器中的一个准确指标,但在设备上进行评测时,需要对其进行评估。就个人而言,我会考虑任何线程,需要很长的CPU时间没有很好的理由,一个需要解决的问题。 找出时间汇,按百分比排列优先级,然后开始处理它们。这些问题现在可能并不明显,但如果还没有出现,它们将开始降低用户对应用程序的体验,甚至可能降低设备的体验 查看如何有效地使用CPU评测以获得一些方便的提示 如果数组的枚举需要花费很多时间,那么我建议使用字典或其他更有效的缓存,假设您可以节省一些内存来简化CPU 一种有效的方法可能是从主线程()中删除所有业务逻辑,并在应用程序和解析/业务逻辑之间建立一个良好的边界层。从这里,您可以更好地挂接一些测试套件,这些套件可以更好地告诉您代码是否有错误,或者是否只是应用程序UI本身的重要需求…八分钟 在不绕圈子的情况下,您希望使您的应用程序更快,对吗 忘了看看CPU负载,想想它是否是正确的数量。 忘记猜测是否是HTTP解析。也许是的,但是猜测不会告诉你。 忘记在代码中四处翻找计时的事情,希望你能找到问题所在 你可以直接找到它花费如此多时间的原因。 及 如果你那样做,将会发生什么。 首先,你会发现一些你永远都猜不到的东西,当你修复它时,你会在8分钟内减去一大块,比如说,可能会减少到6分钟。 然后你再做一次,去掉另一大块。 你重复,直到你找不到任何东西来修复,然后它会比你的8分钟快得多
好的,现在轮到你了。这是否意味着仅从运行时间/CPU使用率来看“没有任何有意义的结论”?当涉及到动画、滚动视图、在地图上移动时,该应用确实“感觉”迟钝。问题是,如何将两者联系起来?您可以说,应用程序在cpu消耗方面相当密集,但您对该进程的分布一无所知。你要找的是高比例的人。正如我所说的,如果你在主线程中解析响应(比如说,在滚动表视图时),你的应用程序可能会变得“迟钝”。我发现令人惊讶的是,有人会说用户无法注意到的性能问题不是问题。它可能不是最高优先级,但您的用户会注意到电池电量的减少,并且可能会减慢其他后台任务。如果操作系统维护人员花了这么多时间优化他们的系统,你不认为应用程序开发人员应该效仿吗?一般来说,你是对的,但我认为本次讨论不在这个主题上。如果你的应用程序必须做些什么,它无论如何都会消耗cpu的能量。在后台线程中工作并不会降低功耗,它只会改善整体体验。你把这个问题说得太笼统了。如果您想优化电池使用,您可能需要在仪器中使用“能量诊断”工具。编辑:除此之外,我在我的第一条评论中写道,运行时间意味着什么,以及你应该在哪里寻找更多细节。“如果你的应用程序必须做些什么,它无论如何都会消耗cpu的能量。”我不能说我同意这个原则。有不同复杂度的算法,批处理操作,数据转换,每个请求都可能发生,而不是全部