Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/116.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 是";“运行时间”&引用;CPU使用率“;一个有用的衡量工具下得出什么结论?_Ios_Profiling_Instruments - Fatal编程技术网

Ios 是";“运行时间”&引用;CPU使用率“;一个有用的衡量工具下得出什么结论?

Ios 是";“运行时间”&引用;CPU使用率“;一个有用的衡量工具下得出什么结论?,ios,profiling,instruments,Ios,Profiling,Instruments,使用“”和“”分析iPhone 4上的应用程序,并试图理解它 假设执行时间为8分钟,CPU“运行时间”大约为2分钟。 其中大约67%在主线程上,其中52%来自“自己的代码” 现在,我可以看到大部分时间都花在枚举数组(以及相关工作)、UIKit操作等方面 问题是,我如何从这些数据中得出任何有意义的结论?i、 这里出了点问题,需要解决 我可以看到在运行时间内有很多CPU负载(中值为70%),考虑到应用程序的性质,这是不“合理的” 话虽如此,有些事情确实很突出。在主线程上解析HTTP响应,急切地创建对

使用“”和“”分析iPhone 4上的应用程序,并试图理解它

假设执行时间为8分钟,CPU“运行时间”大约为2分钟。 其中大约67%在主线程上,其中52%来自“自己的代码”

现在,我可以看到大部分时间都花在枚举数组(以及相关工作)、UIKit操作等方面

问题是,我如何从这些数据中得出任何有意义的结论?i、 这里出了点问题,需要解决

我可以看到在运行时间内有很多CPU负载(中值为70%),考虑到应用程序的性质,这是不“合理的”

话虽如此,有些事情确实很突出。在主线程上解析HTTP响应,急切地创建对象(也通过内存分析进行备份)

然而,我在这里寻找的是令人不快的代码以及仅基于CPU运行时间的有用结论。i、 在这里花费“太多”的时间

更新

让我试着详细说明一下,以便更好地了解情况

基于这个应用的功能需求,我不明白为什么它不能在iPhone3G上运行。CPU使用率中位数约为70%,峰值为97%,这看起来就像是iPhone4上的一个危险信号

对此最明显的反应是调查代码并从中得出结论

我希望得到的是以下形式的明确答案

  • 如果你在CA上花费了25%-50%的时间,那么你的动画就有问题了
  • 如果您在任何与UIKit相关的事情上花费1000毫秒,最好检查您的处理
  • 再说一次,在运行时间和CPU使用率方面,可能没有任何答案,只有关闭的迹象。

    问题“这里是否存在需要修复的错误”的答案很简单:您在使用应用程序时看到问题了吗?如果是(您在动画中看到小故障,或者应用程序挂起一段时间),您可能希望修复它。如果不是,您可能正在寻找过早的优化

    尽管如此,在主线程中解析http响应可能是个坏主意。

    在开发演示文稿中,苹果公司指出,虽然CPU使用率不是模拟器中的一个准确指标,但在设备上进行评测时,需要对其进行评估。就个人而言,我会考虑任何线程,需要很长的CPU时间没有很好的理由,一个需要解决的问题。 找出时间汇,按百分比排列优先级,然后开始处理它们。这些问题现在可能并不明显,但如果还没有出现,它们将开始降低用户对应用程序的体验,甚至可能降低设备的体验

    查看如何有效地使用CPU评测以获得一些方便的提示

    如果数组的枚举需要花费很多时间,那么我建议使用字典或其他更有效的缓存,假设您可以节省一些内存来简化CPU

    一种有效的方法可能是从主线程()中删除所有业务逻辑,并在应用程序和解析/业务逻辑之间建立一个良好的边界层。从这里,您可以更好地挂接一些测试套件,这些套件可以更好地告诉您代码是否有错误,或者是否只是应用程序UI本身的重要需求…

    八分钟

    在不绕圈子的情况下,您希望使您的应用程序更快,对吗

    忘了看看CPU负载,想想它是否是正确的数量。 忘记猜测是否是HTTP解析。也许是的,但是猜测不会告诉你。 忘记在代码中四处翻找计时的事情,希望你能找到问题所在

    你可以直接找到它花费如此多时间的原因。 及

    如果你那样做,将会发生什么。 首先,你会发现一些你永远都猜不到的东西,当你修复它时,你会在8分钟内减去一大块,比如说,可能会减少到6分钟。 然后你再做一次,去掉另一大块。 你重复,直到你找不到任何东西来修复,然后它会比你的8分钟快得多


    好的,现在轮到你了。

    这是否意味着仅从运行时间/CPU使用率来看“没有任何有意义的结论”?当涉及到动画、滚动视图、在地图上移动时,该应用确实“感觉”迟钝。问题是,如何将两者联系起来?您可以说,应用程序在cpu消耗方面相当密集,但您对该进程的分布一无所知。你要找的是高比例的人。正如我所说的,如果你在主线程中解析响应(比如说,在滚动表视图时),你的应用程序可能会变得“迟钝”。我发现令人惊讶的是,有人会说用户无法注意到的性能问题不是问题。它可能不是最高优先级,但您的用户会注意到电池电量的减少,并且可能会减慢其他后台任务。如果操作系统维护人员花了这么多时间优化他们的系统,你不认为应用程序开发人员应该效仿吗?一般来说,你是对的,但我认为本次讨论不在这个主题上。如果你的应用程序必须做些什么,它无论如何都会消耗cpu的能量。在后台线程中工作并不会降低功耗,它只会改善整体体验。你把这个问题说得太笼统了。如果您想优化电池使用,您可能需要在仪器中使用“能量诊断”工具。编辑:除此之外,我在我的第一条评论中写道,运行时间意味着什么,以及你应该在哪里寻找更多细节。“如果你的应用程序必须做些什么,它无论如何都会消耗cpu的能量。”我不能说我同意这个原则。有不同复杂度的算法,批处理操作,数据转换,每个请求都可能发生,而不是全部