[英]Android Eclipse: Traceview, I just don't get it
我只是沒有得到traceview輸出的各種元素,我找不到教程。 有人可以參考下圖解釋以下內容:
(我會在@ 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)
埃里克回答
我無法回答你的所有問題,但我可以說......
對於#4 no,你正在運行一個核心處理器(或至少模擬一個),因此他們自己的線程上的異步任務必須中斷主線程以獲得處理時間。 任何時候另一個線程執行將在主線程上“減速”,所以你應該看着它。
對於#6,您在主線程執行跟蹤中看到的那些差距與您的asynctask獲取處理器時間的時間完全相關。 同樣,單核,一次只能做1個線程。 在這個時間片中,它看起來不像任何其他進程有任何處理器時間,但這些線程仍然在后台休眠。 由於這是(可能)一個模擬器,這很常見。 在實時手機上你會看到更多:)
我也非常確定#1線程執行中每個尖峰的高度是%處理器利用率。 例如,主線程的“黑色”區域是系統空閑的。 編輯:好的,我現在肯定。 就是這樣。 所以在你的主線程中,那個粉紅色的區域是100%處理器利用率。
關於traceview圖的另一個重要技術訣竅(如此處所述 ):traceview顯示的時間不是真實的掛鍾時間,而是使用CPU時間。
例如,通過減小FPS,跟蹤視圖的形狀可能不會改變,因為它不包括空閑占空比。 因此,在測量性能時,還建議運行應用程序一段固定的時間(10秒,60秒等),並檢查100%包含呼叫所用的時間是否比以前低。
谷歌剛剛在Udacity上發布了關於Android性能的精彩課程。 這個模塊提供了Traceview的演練 ,以及視頻模塊下面的鏈接到他們的課程指南,其中深入介紹了Traceview的使用。 查看這些內容將回答您的大部分問題。 我強烈建議你看看吧!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.