Android traceview中包含CPU时间、不包含CPU时间、包含实时CPU时间、不包含实时CPU时间的含义是什么?

Android traceview中包含CPU时间、不包含CPU时间、包含实时CPU时间、不包含实时CPU时间的含义是什么?,android,cpu-usage,android-traceview,Android,Cpu Usage,Android Traceview,1) 独占时间是在方法中花费的时间 2) Inclusive time是在方法中花费的时间加上在任何调用函数中花费的时间 3) 我们将调用方法称为“父对象”,将方法称为“子对象” 参考链接: 问题是: 它们之间有什么区别 包括CPU时间&包括实时CPU时间 不包括CPU时间&不包括实时CPU时间 在我的一个示例跟踪文件中 对于Method1():包括CPU时间=242毫秒&包括实时CPU时间=5012毫秒 我无法确定上述两次5012-242=4770毫秒间隙背后的原因 如果您有任何想法,

1) 独占时间是在方法中花费的时间 2) Inclusive time是在方法中花费的时间加上在任何调用函数中花费的时间 3) 我们将调用方法称为“父对象”,将方法称为“子对象” 参考链接:

问题是:

它们之间有什么区别

  • 包括CPU时间&包括实时CPU时间
  • 不包括CPU时间&不包括实时CPU时间
在我的一个示例跟踪文件中 对于Method1():包括CPU时间=242毫秒&包括实时CPU时间=5012毫秒

  • 我无法确定上述两次5012-242=4770毫秒间隙背后的原因

如果您有任何想法,请帮助我。

cpu时间是进程使用cpu的时间,cpu实时是从进程开始到进程结束的总时间,它包括进程执行的等待时间。

包含CPU时间是包含的CPU时间。它是在函数本身中花费的时间的总和,以及它调用的所有函数的时间的总和

排除CPU时间是排除CPU时间。这只是花在函数本身上的时间。您会注意到,它始终与“self”孩子的“incl time”相同


文档没有阐明CPU时间实时之间的区别,但我同意Neetesh的观点,即CPU时间是函数实际运行的时间(这不包括等待IO),而实时是墙上的时钟时间(这将包括执行IO所花费的时间).

从.trace的源代码中,您可以看到与实际cpu时间不同的cpu时间细节,这与android文档的描述相同:
CPU时间只考虑线程正在积极使用CPU时间的时间,而real time提供了从应用程序进入某个方法到退出该方法的绝对计时信息,无论线程是活动的还是休眠的。

我将检查我的日志,并与您的答案进行比较。从您的回答中,我们可以看到cpu铰时间小于cpu时间。我会在检查完这些细节后接受你的回答。谢谢你的帮助。