日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

TraceView 的使用

發(fā)布時(shí)間:2024/8/1 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 TraceView 的使用 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

TraceView 的使用

TraceView 簡(jiǎn)介

  • TraceView 是 Android 平臺(tái)特有的數(shù)據(jù)采集和分析工具,它主要用于分析 Android 中應(yīng)用程序的 hotspot,對(duì)java層代碼以及framework層代碼進(jìn)行分析。(native方法無(wú)法直接分析)

  • TraceView 本身只是一個(gè)數(shù)據(jù)分析工具,而數(shù)據(jù)的采集則需要使用 Android SDK 中的 Debug 類或者利用 DDMS 工具。

  • 官方文檔地址:

  • https://developer.android.com/studio/profile/traceview.html

    TraceView 的生成

    traceview的使用方法有兩種:

  • 代碼調(diào)用:
    在一些關(guān)鍵代碼段開(kāi)始前調(diào)用 Android SDK 中 Debug 類的 startMethodTracing 函數(shù),并在關(guān)鍵代碼段結(jié)束前調(diào)用 stopMethodTracing 函數(shù)。這兩個(gè)函數(shù)運(yùn)行過(guò)程中將采集運(yùn)行時(shí)間內(nèi)該應(yīng)用所有線程(注意,只能是 Java 線程)的函數(shù)執(zhí)行情況,并將采集數(shù)據(jù)保存到 /mnt/sdcard/ 下的一個(gè)文件中。
  • /** * 創(chuàng)建 */ private void onCreate(){// 生成traceView的起點(diǎn),保存traceView 的名稱(路徑:/mnt/sdcard/fileName)Debug.startMethodTracing("fileName"); }/** * 銷(xiāo)毀 */ private void onDestroy(){Debug.stopMethodTracing(); } 優(yōu)缺點(diǎn):分析精準(zhǔn);分析范圍窄;需要編碼 適用場(chǎng)景:分析檢測(cè)某一個(gè)方法的性能時(shí)適用
  • 借助DDMS工具:
    DDMS 中 TraceView 使用示意圖如下,通過(guò)選擇 Devices 中的應(yīng)用后點(diǎn)擊
    按鈕 Start Method Profiling(開(kāi)啟方法分析)和點(diǎn)擊Stop Method Profiling(停止方法分析)

  • 開(kāi)啟方法分析后對(duì)應(yīng)用的目標(biāo)頁(yè)面進(jìn)行測(cè)試操作,測(cè)試完畢后停止方法分析,界面會(huì)跳轉(zhuǎn)到 DDMS 的 trace 分析界面

    優(yōu)缺點(diǎn):分析范圍廣,操作簡(jiǎn)單,干擾多 適用場(chǎng)景:分析一個(gè)過(guò)程

    ###TraceView 的分析
    一. 通過(guò)AndroidStudio 打開(kāi)trace文件,展示的界面如下:

    將方法調(diào)用順序可視化,方法執(zhí)行的時(shí)間也可視化了。
    tips:Android studio 打開(kāi)后,面板中文字特別小,此時(shí)可以通過(guò)放大鏡來(lái)查看。(Mac 快捷鍵:option + command + 8)

    二. 通過(guò)ADM打開(kāi)trace文件,展示的界面如下:

    TraceView 界面比較復(fù)雜,其 UI 劃分為上下兩個(gè)面板,即 Timeline Panel(時(shí)間線面板)和 Profile Panel(分析面板)。上圖中的上半部分為 Timeline Panel(時(shí)間線面板),Timeline Panel 又可細(xì)分為左右兩個(gè) Pane:

  • 時(shí)間面板
  • 左邊 Pane 顯示的是測(cè)試數(shù)據(jù)中所采集的線程信息。
  • 右邊 Pane 所示為時(shí)間線,時(shí)間線上是每個(gè)線程測(cè)試時(shí)間段內(nèi)所涉及的函數(shù)調(diào)用信息。這些信息包括函數(shù)名、函數(shù)執(zhí)行時(shí)間等。、
  • 可以在時(shí)間線 Pane 中移動(dòng)時(shí)間線縱軸。縱軸上邊將顯示當(dāng)前時(shí)間點(diǎn)中某線程正在執(zhí)行的函數(shù)信息。
  • 分析面板
  • Profile Panel 是 TraceView 的核心界面,其內(nèi)涵非常豐富。它主要展示了某個(gè)線程(先在 Timeline Panel 中選擇線程)中各個(gè)函數(shù)調(diào)用的情況,包括 CPU 使用時(shí)間、調(diào)用次數(shù)等信息。而這些信息正是查找 hotspot 的關(guān)鍵依據(jù)。
  • 下表列出了 Profile Panel 中比較重要的列名及其描述:
  • 舉個(gè)例子:

    private void init(){a();b();c();d();for(int i=0;i<100;i++){System.out.print("i = " + i);} }

    ###TraceView 的實(shí)踐

  • 先通過(guò)TraceView找到 hotspot,一般hopspot函數(shù)有以下兩種:

  • 一類是調(diào)用次數(shù)不多,但每次調(diào)用卻需要花費(fèi)很長(zhǎng)時(shí)間的函數(shù)。
  • 一類是那些自身占用時(shí)間不長(zhǎng),但調(diào)用卻非常頻繁的函數(shù)。
  • 舉個(gè)例子:

    如上圖,獲取sharedPreference 耗時(shí)很?chē)?yán)重,阻塞主線程,將該操作拋到異步線程。

  • ###總結(jié)
    性能優(yōu)化就像海綿中的水,擠一擠總會(huì)有的。同時(shí),性能優(yōu)化并不是一勞永逸的工作,而是一個(gè)漫長(zhǎng)而具有挑戰(zhàn)的任務(wù);項(xiàng)目的各個(gè)階段都會(huì)有性能上的問(wèn)題,在用戶體驗(yàn)的基礎(chǔ)上持續(xù)進(jìn)行打磨,持續(xù)保持產(chǎn)品的良好性能才能贏得好口碑。(和保持身體健康是一個(gè)道理)

    總結(jié)

    以上是生活随笔為你收集整理的TraceView 的使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。