2011-06-25 21 views
39

我只是沒有得到traceview輸出的各種元素,我找不到教程。可能有人請解釋下面參考下圖:Android Eclipse:Traceview,我只是不明白

enter image description here

  1. 條的寬度對應於所述功能所花費的時間。高度對應於什麼?
  2. 包容性和獨佔性之間的具體區別是什麼?我認爲包容性包括所有兒童功能的呼叫?
  3. 這是真的:(每次調用次數調用的次數)=程序運行的時間(異步任務是什麼?)
  4. 當調試主線程的減速時,可以忽略異步任務嗎?
  5. Excl%中的所有百分比之和應等於100%嗎?
  6. 當有間隙時(黑色中的白色)會發生什麼?當其他android進程正在運行時,或者只是您自己的異步任務(看起來其中一個空隙與另一個空間中的空隙是一致的,如果這樣的話,那麼將密集任務移動到AsyncTask )?
+4

閱讀[Traceview War Story](http://android-developers.blogspot.com/2010/10/traceview-war-story.html)。它回答您關於「包容性」和「專屬」欄目的問題。埃裏克的答案涉及其餘的問題。 – keno

回答

10

我不能回答你所有的問題,但我可以說...

的#4沒有,你正在運行的單核處理器(或者至少仿效一個)對自己如此異步任務線程必須中斷主線程才能獲得處理時間。任何時候執行另一個線程都會在主線程上「減速」,所以你應該看着它。

對於#6,您在主線程執行跟蹤中看到的那些差距與您的asynctask獲取處理器時間的時間恰好相關。再次,單核,一次只能做1個線程。在這個時間片中,看起來沒有任何其他進程獲得任何處理器時間,但那些線程仍然在後臺休眠。由於這可能是一個仿真器,這很常見。在現場的手機上,你會看到更多的:)

我也相當肯定#1線程的執行中每個尖峯的高度是%處理器利用率。例如,主線程的「黑色」區域是系統空閒的。編輯:好吧,我現在確定。這就是這樣。所以在你的主線程中,那個堅實的粉紅色區域確實是100%的處理器利用率。

+0

謝謝埃裏克,其實這是在一個真正的手機 – tjb

+0

+1謝謝你的答案,埃裏克。你有沒有一個明確的參考文獻來說明你的#1答案?這也是我的預感,但我無法在任何地方找到參考。 –

1

跟蹤視圖圖形的其他重要技巧(如mentioned here):traceview顯示的時間不是現實世界掛鐘時間,而是使用CPU時間。

例如,通過減少FPS,跟蹤視圖圖形的形狀可能不會改變,因爲它不包括空閒佔空比。因此,在測量性能時,還建議您運行該應用程序一段固定的時間(10秒,60秒等),並檢查100%包含的呼叫所用的時間是否比以前少。

17

(我會添加這個作爲評論@ ron的答案,但我的聲譽還不夠高,我可以評論;))。

自2011年7月以來,事實上,通過Jeff Brown的代碼更改,您可以獲得traceview和VMDebug,從而爲您提供掛鐘時間以及cpu使用時間。恐怕必要的權限需要根植設備。這也導致跟上面tjb的帖子略有不同。

http://git.insignal.co.kr/?p=mirror/aosp/platform/dalvik.git;a=commitdiff;h=9f640af99bebc6e96f6e1e9903557e2c8f567483

TLDR; adb shell setprop dalvik.vm.extra-opts -Xprofile:dualclock並重新啓動您的設備。

人力資源管理,因爲我在技術上應該幫助回答問題:

  1. 我的酒吧高度的理解是,它關係到母公司的功能。假設a()調用b()。然後,a()正在運行,而b()也在運行。當b()運行時traceview會顯示b的顏色;但是當a運行時(即,不包括時間),它將繪製顏色,並且它將畫出比b的杆略高的杆。至少,這當然是放大時的工作方式;如果您點擊與較高欄對應的功能,它會將括號放在靠近它的小欄下面,表明父母對所有欄都負責;父母總是顯示爲較高的酒吧。

  2. 是:)。包容性是花在執行函數或該函數調用的任何東西上的時間; Exclusive是'不包含被調用的函數'的,並且僅僅是在適當的功能(或者切入/切出它)中花費的時間。

  3. 只適用於我認爲您暗示的頂層;甚至可以看到@ ron的答案 - 這是cpu使用時間,而不是掛鐘時間。 AsyncTasks在主線程中運行,因此將包含在頂級細分中的某處。同爲處理程序

  4. 由Eric

  5. 沒有回答,因爲圍捕/本輪下跌(即1.87%的人會顯示爲1.9%);但在「獨家」的條目的總和加起來應該在右上角顯示的總時間,其計算公式爲您的問題(3)

  6. 回答埃裏克

數相同
0

Google剛剛發佈了一個關於Udacity Android性能的驚人課程。有this module that provides a walkthrough of Traceview,以及視頻模塊下方的鏈接,其課程指南詳盡介紹了Traceview的用法。查看這些將回答你的大部分問題。我強烈建議你檢查一下!