tjb*_*tjb 39 eclipse android profiling
我只是没有得到traceview输出的各种元素,我找不到教程.有人可以参考下图解释以下内容:

jdo*_*ell 17
(我会在@ ron的回答中添加这个作为评论,但我的声誉仍然不高,我可以发表评论;)).
自2011年7月起,由于Jeff Brown的代码更改,您实际上可以获得traceview和VMDebug,以便为您提供挂钟时间以及CPU使用时间.我担心必要的权限需要root设备.这也导致跟上面的tjb稍微不同的跟踪视图窗口.
TLDR; adb shell setprop dalvik.vm.extra-opts -Xprofile:dualclock并重新启动您的设备.
HRM,因为我在技术上应该帮助回答这个问题:
我对条形高度的理解是它与父函数有关.假设a()调用b().然后a()正在运行,而b()也在运行.当b()运行时,traceview将显示b的颜色; 但是当a运行时(即excl时间)它将绘制一个颜色,并且它将绘制一个略高于b的条形的条形图.至少,当你放大时,这绝对是可行的.如果你点击相应较高栏的功能,它会将括号放在靠近它的小栏下方,表明父母负责所有这些; 并且父母总是显示为较高的栏.
是的:).包含是执行函数所花费的时间或该函数调用的任何东西; Exclusive是'不包括被调用函数',只是在函数中花费的时间(或切换到/退出它).
只为了我认为你所暗示的顶层; 甚至那时看@ ron的回答 - 这是cpu使用时间,而不是挂钟时间.AsyncTasks在主线程中运行,因此将被包含在顶层故障中的某处.处理程序相同
埃里克回答
不,因为向上/向下舍入(即1.87%将显示为1.9%); 但"独家"中条目的总和应加起来在右上角显示的总时间,这与为您的问题计算的数字相同(3)
埃里克回答
Eri*_*ric 10
我无法回答你的所有问题,但我可以说......
对于#4 no,你正在运行一个核心处理器(或至少模拟一个),因此他们自己的线程上的异步任务必须中断主线程以获得处理时间.任何时候另一个线程执行将在主线程上"减速",所以你应该看着它.
对于#6,您在主线程执行跟踪中看到的那些差距与您的asynctask获取处理器时间的时间完全相关.同样,单核,一次只能做1个线程.在这个时间片中,它看起来不像任何其他进程有任何处理器时间,但这些线程仍然在后台休眠.由于这是(可能)一个模拟器,这很常见.在实时手机上你会看到更多:)
我也非常确定#1线程执行中每个尖峰的高度是%处理器利用率.例如,主线程的"黑色"区域是系统空闲的.编辑:好的,我现在肯定.就是这样.所以在你的主线程中,那个粉红色的区域是100%处理器利用率.