DDMS探查器中的本机代码是什么样的?

时间:2014-04-10 22:19:27

标签: android profiling ddms

我知道DDMS探查器不会分析本机方法调用,我知道我可以使用各种方法来分析本机代码,但我真正想知道的是本机代码与Java代码的比例。

特别是,当调用本机方法时,DDMS方法分析会做什么?时间是否仍然记录?有问题的应用程序有一个长的,阻塞的本机调用,但它显示为只需要118毫秒,并作为一个长"下划线"在可视化跟踪查看器中(而不是固体"块"与Java代码一起看到)。我是否正确地猜测在本机代码中花费的时间没有添加到配置文件中函数的总体时间?

1 个答案:

答案 0 :(得分:1)

Dalvik method profiler为每个方法调用记录两个时间戳。一个来自CLOCK_THREAD_CPUTIME_ID计时器,另一个来自挂钟时间(gettimeofday())。前者粗略衡量线程执行代码所花费的时间。

当线程处于休眠状态时(例如,在互斥锁上被阻塞),线程cputime时钟不会前进,但在执行或(IIRC)等待磁盘I / O完成时会提前。原始的分析代码只记录了线程cputime - 一段时间后将挂钟时间添加到混合中,这样你就可以看到该方法实际执行的时间以及繁忙程度。

对于托管代码和本机代码,在输入方法和返回方法时会创建一个条目。在这方面没有真正的区别。