導航:首頁 > 操作系統 > android性能指標

android性能指標

發布時間:2022-11-13 01:42:28

android性能測試工具有哪些

大概有如下幾個工具:
android針對上面這些會影響到應用性能的情況提供了一些列的工具:
1 布局復雜度:
hierarchyviewer:檢測布局復雜度,各視圖的布局耗時情況:

Android開發者模式—GPU過渡繪制:

2 耗電量:Android開發者模式中的電量統計;
3 內存:
應用運行時內存使用情況查看:Android Studio—Memory/CPU/GPU;

內存泄露檢測工具:DDMS—MAT;
4 網路:Android Studio—NetWork;
5 程序執行效率:
靜態代碼檢查工具:Android studio—Analyze—Inspect Code.../Code cleanup... ,用於檢測代碼中潛在的問題、存在效率問題的代碼段並提供改善方案;
DDMS—TraceView,用於查找程序運行時具體耗時在哪;
StrictMode:用於查找程序運行時具體耗時在哪,需要集成到代碼中;
Andorid開發者模式—GPU呈現模式分析。
6 程序穩定性:monkey,通過monkey對程序在提交測試前做自測,可以檢測出明顯的導致程序不穩定的問題,執行monkey只需要一行命令,提交測試前跑一次可以避免應用剛提交就被打回的問題。
說明:
上面提到的這些工具可以進Android開發者官網性能工具介紹查看每個工具的介紹和使用說明;

Android開發者選項中有很多測試應用性能的工具,對應用性能的檢測非常有幫助,具體可以查看:All about your phone's developer options和15個必知的Android開發者選項對Android開發者選項中每一項的介紹;

針對Android應用性能的優化,Google官方提供了一系列的性能優化視頻教程,對應用性能優化具有非常好的指導作用,具體可以查看:優酷Google Developers或者Android Performance Patterns。

二 第三方性能優化工具介紹
除了android官方提供的一系列性能檢測工具,還有很多優秀的第三方性能檢測工具使用起來更方便,比如對內存泄露的檢測,使用leakcanry比MAT更人性化,能夠快速查到具體是哪存在內存泄露。
leakcanary:square/leakcanary · GitHub,通過集成到程序中的方式,在程序運行時檢測應用中存在的內存泄露,並在頁面中顯示,在應用中集成leancanry後,程序運行時會存在卡頓的情況,這個是正常的,因為leancanry就是通過gc操作來檢測內存泄露的,gc會知道應用卡頓,說明文檔:LeakCanary 中文使用說明、LeakCanary: 讓內存泄露無所遁形。
GT:GT Home,GT是騰訊開發的一款APP的隨身調測平台,利用GT,可以對CPU、內存、流量、點亮、幀率/流暢度進行測試,還可以查看開發日誌、crash日誌、抓取網路數據包、APP內部參數調試、真機代碼耗時統計等等,需要說明的是,應用需要集成GT的sdk後,GT這個apk才能在應用運行時對各個性能進行檢測。

⑵ Android性能優化第(八)篇---App啟動速度優化之耗時檢測處理

應用的啟動速度緩慢這是很多開發者都遇到的一個問題,比如啟動緩慢導致的黑屏,白屏問題,大部分的答案都是做一個透明的主題,或者是做一個Splash界面,但是這並沒有從根本上解決這個問題。那麼如何從根本上解決這個問題或者做到一定程度的緩解?

1、冷啟動:當啟動應用時,後台沒有該應用的進程,這時系統會首先會創建一個新的進程分配給該應用,這種啟動方式就是冷啟動。

2、熱啟動:當啟動應用時,後台已有該應用的進程,比如按下home鍵,這種在已有進程的情況下,這種啟動會從已有的進程中來啟動應用,這種啟動方式叫熱啟動。

3、溫啟動 :當啟動應用時,後台已有該應用的進程,但是啟動的入口Activity被幹掉了,比如按了back鍵,應用雖然退出了,但是該應用的進程是依然會保留在後台,這種啟動方式叫溫啟動。

adb shell am start -W [PackageName]/[PackageName.MainActivity]

執行成功後將返回三個測量到的時間:

這裡面涉及到三個時間,ThisTime、TotalTime 和 WaitTime。WaitTime 是 startActivityAndWait 這個方法的調用耗時,ThisTime 是指調用過程中最後一個 Activity 啟動時間到這個 Activity 的 startActivityAndWait 調用結束。TotalTime 是指調用過程中第一個 Activity 的啟動時間到最後一個 Activity 的 startActivityAndWait 結束。如果過程中只有一個 Activity ,則 TotalTime 等於 ThisTime。

總結:如果只關心某個應用自身啟動耗時,參考TotalTime;如果關心系統啟動應用耗時,參考WaitTime;如果關心應用有界面Activity啟動耗時,參考ThisTime。

從我們Application開始到首頁顯示出來,這個過程,我們應該注意一些什麼,將這個過程細分一下,會有下面的時間點需要注意。

Application的構造器方法——>attachBaseContext()——>onCreate()——>Activity的構造方法——>onCreate()——>配置主題中背景等屬性——>onStart()——>onResume()——>測量、布局、繪制顯示在界面上。

因為上面這些階段全部都是在主線程中執行的,任何不經意的操作都可能拖慢應用的啟動速度。所以我們不應在Application以及Activity的生命周期回調中做任何費時操作,具體指標大概是你在onCreate,onResume,onStart等回調中所花費的總時間最好不要超過400ms,否則用戶在桌面點擊你的應用圖標後,將感覺到明顯的卡頓。但是有些 不得以的任務 又必須在UI顯示之前執行。所以我們要將 任務 劃分優先順序。

對於首頁渲染完成後,開始載入,或者延遲載入,延遲載入的目的就是界面先顯示出來,然後載入,但是你覺得要延遲多久呢?在 Android 的高端機型上,應用的啟動是非常快的 , 這時候只需要 Delay 很短的時間就可以了, 但是在低端機型上,應用的啟動就沒有那麼快了,而且現在應用為了兼容舊的機型,往往需要 Delay 較長的時間,這樣帶來體驗上的差異是很明顯的。延遲載入有一種方式。

極力推薦用第二種,在窗口完成以後進行載入,這裡面的run方法是在onResume之後運行的。關於這種懶載入機制,參考 Android應用啟動優化:一種DelayLoad的實現和原理(上篇) ,給出了詳細的解釋。

通過上面我們知道一種懶載入機制,所以我們可以將Application中和首頁的onCreate中的有些耗時任務,放到首頁渲染完畢後載入。如何找出這些耗時任務,TraceView就派上用場了,TraceView的用法,移步我的前面的博客 Android性能優化第(六)篇---TraceView 分析圖怎麼看?

比如在首頁的onCreate中我們進行了用戶啟動上報,這個進行懶載入是不是分分鍾減少139毫秒呢?

在比如在Application裡面用到了GSON,將String轉化成json,我將這個移動到懶載入裡面,是不是又減少了100毫秒呢?

在比如,有些Application中做了支付SDK的初始化,用戶又不會一打開App就要支付,放在Application中載入幹嘛?

此處我們這里舉得例子是優化了139毫秒和100毫秒的,其實真正耗時的任務有的有1秒多,都被我優化完了,所以trace圖中看不到了,就舉個了這兩個例子,還有SharedPreferences也是耗時大戶,經過檢測保存一個boolean變數耗時120+毫秒以上。

利用TraceView可以清楚我們每一個方法的耗時時間,極大的幫助了我們做優化工作。

五、優化思路總結
1、UI渲染優化,去除重復繪制,減少UI重復繪制時間,打開設置中的GPU過度繪制開關,各界面過度繪制不應超過2.5x;也就是打開此調試開關後,界面整體呈現淺色,特別復雜的界面,紅色區域也不應該超過全屏幕的四分之一;
2、根據優先順序的劃分,KoMobileApplication的一些初始化工作能否將任務優先順序劃分成3,在首頁渲染完成後進行載入,比如:PaySDKManager。
3、主線程中的所有SharedPreference能否在非UI線程中進行,SharedPreferences的apply函數需要注意,因為Commit函數會阻塞IO,這個函數雖然執行很快,但是系統會有另外一個線程來負責寫操作,當apply頻率高的時候,該線程就會比較佔用CPU資源。類似的還有統計埋點等,在主線程埋點但非同步線程提交,頻率高的情況也會出現這樣的問題。
4、檢查BaseActivity,不恰當的操作會影響所有子Activity的啟動。
5、對於首次啟動的黑屏問題,對於「黑屏」是否可以設計一個.9圖片替換掉,間接減少用戶等待時間。
6、對於網路錯誤界面,友好提示界面,使用ViewStub的方式,減少UI一次性繪制的壓力。
7、任務優先順序為2,3的,通過下面這種方式進行懶載入的方式

8、Multidex的使用,也是拖慢啟動速度的元兇,必須要做優化。後面有空專門寫一篇Multidex。

相關鏈接:

Android應用啟動優化:一種DelayLoad的實現和原理(上篇)http://androidperformance.com/2015/11/18/Android-app-lunch-optimize-delay-load.html

Android性能優化之加快應用啟動速度http://www.open-open.com/lib/view/open1452821612355.html

手機淘寶性能優化全記錄http://www.open-open.com/lib/view/open1452488209370.html

Android客戶端性能優化(魅族資深工程師毫無保留奉獻)http://blog.tingyun.com/web/article/detail/155#rd

Please accept mybest wishes for your happiness and success !

⑶ 如何測試安卓(Android)系統的流暢度

測試方法一:系統自帶-開發者模式

實際上,為了方便開發者測試,安卓本身就內置了流暢度檢測的功能。不過,這需要我們開啟隱藏的開發者選項。如果你在用原生系統,那麼開啟開發者選項的方法很簡單,進入到設置菜單「關於手機」頁面,點擊數次「版本號」,即可開啟開發者選項。如果用的是其他ROM,方法也許有所不同,比如說魅族的Flyme開啟開發者選項的方法是在撥號界面輸入「*#*#6961#*#*」,其他機器方法也各有不同,大家可以參照廠商的說明。

進入到開發者選項,可以看到有「GPU呈現模式分析」的選項,開啟後即可以條形圖和線形圖的方法顯示系統的界面響應速度,可以用以觀察系統流暢度。那麼要如何根據曲線判斷系統是否流暢呢?實際上這個曲線表達的是GPU繪制每一幀界面的時間,只要不超過頂部綠線,都可以視為足夠流暢。

開啟GPU呈現模式分析

FPS Meter可以顯示最大最小幀數以及平均幀數

FPS Meter可以測試界面幀數,不過某些手機如果界面靜止,幀數會為0。FPS Meter除了測量系統界面幀數外,還可以用來測量游戲的幀數,所以用FPS Meter來測試某部安卓機游戲性能多強也是個很好的選擇。

當然,FPS Meter也並非十全十美。由於屬於第三方App,所以可能會有一些兼容性問題。某些安卓機或者ROM使用FPS Meter可能會不兼容,即使成功開啟了幀數顯示也沒法測量到准確數值,而某些設備使用FPS Meter甚至會死機。不過在大多數情況下,這款App還是相當值得信任的。

安卓在多個版本中都通過新技術提升了流暢度,比如說安卓2.3引入Dalvik、安卓4.0引入GPU界面繪制、安卓4.1引入黃油計劃、安卓4.3引入Trim以及安卓4.4引入ART等等。

H5頁面載入速度:window.performance.timing

Android以上測試方法不適用h5頁面

如何分析頁面整體載入速度:

主要是查看指標值PAGET_頁面載入時間,此指標指的是頁面整體載入時間但不含(onload事件和redirect), 此指標值可直接反應用戶體驗, 從此項指標可以知道指定某時間段的頁面載入速度值,以及和天,周,月的對比狀況.也可以查詢指標ALLT_頁面完全載入時間, 可以查詢到從瀏覽器開始導航(用戶點擊鏈接或在地址欄輸入url或點刷新,後退按鈕)到頁面onload 事件js完全跑完的所有時間.如果發現頁面載入速度有增加或減少,則可以分項查詢前面表格中的每個指標值,總的來說他們的關系如下:

dom開始載入前所有花費時間=重定向時間+域名解析時間+建立連接花費時間+請求花費時間+接收數據花費時間

pageLoadTime頁面載入時間=域名解析時間+建立連接花費時間+請求花費時間+接收數據花費時間+解析dom花費時間+載入dom花費時間

allLoadTime頁面完全載入時間=重定向時間+域名解析時間+建立連接花費時間+請求花費時間+接收數據花費時間+解析dom花費時間+載入dom花費時間+執行onload事件花費時間

resourcesLoadedTime資源載入時間=解析dom花費時間+載入dom花費時間

流暢度暫時沒有發現好用的測試衡量工具,開發層面了解,主要是根據log分析

⑷ 關於平板電腦的一些問題。我也知道平板電腦。就是不知道怎麼分辨那些好的。

Android平板電腦,個人使用,達到滿意,其性能主要看以下幾個指標和參數:

  1. 屏幕尺寸及解析度, 如10.1寸,基本要再1920X1080以上。

  2. CPU, 至少是MTK八核,且系統是安卓10.0以上版本。

  3. 運行內存: 至少4GB.

  4. 存儲: 64GB以上。

  5. 電池: 5000MAH 以上。

  6. 攝像頭: 5+13M 或以上。

  7. 4G 通話功能。 (5G 通話目前價格偏高)。

⑸ Android的app性能指標都有哪些基準值

數據化運營評估產品改版後的效果比之前有所提升;或通過數據分析,找到產品迭代的方向等。
收集數據所謂「埋點」,就是在正常的功能邏輯中添加統計代碼,將自己需要的數據統計出來。
產品的基本數據指標留存率:用戶會在多長時間內使用產品。如:次日留存率、周留存率等。傳播:平均每位老用戶會帶來幾位新用戶。流失率:一段時間內流失的用戶,占這段時間內活躍用戶數的比例。

⑹ 手機的性能指標(我要買手機)

首先要知道你要買的手機的CPU。其實現在雙核足夠。當然四核更好。然後是RAM就是運行內存,一般1G夠用。2G呢更好。然後就是機身自帶的ROM。注意 這個ROM其實很重要的。因為比如像現在的安卓機子。安裝軟體。即使你把軟體移到內存卡了。但是軟體的緩存以及一些數據還在ROM理。所以ROM不能少於1G吧。然後屏幕材料和屏幕解析度、。你還有什麼要我細說。可以問

⑺ 做android應用的性能測試有什麼指標參考嗎

60幀最好 安卓studio 可以看幀率,網路,內存,cpu 的情況,精確到方法,變數

⑻ 智能手機主要性能指標有那些

智能手機主要性能指標:
1、CPU:
跟電腦一樣(是計算機的最重要組成部分),是手機的核心部件之一,它直接關繫到
手機運行的快慢、耗電量、價值。智能手機硬體的發展模式 與電腦硬體早期的發展模式大體之一,處理器主頻曾是智能手機性能最重要的指標,從幾年前的500MHz、600MHz、800MHz,發展到現在的 1GHz、1.2GHz甚至1.5GHz、1.6HZ、1.7HZ。其中CPU可有單核、雙核、四核甚至四核+四核通過處理器主頻的提升,可以令智能手機有著更為流暢的程序運行表現和更為強悍的多任務處理能力。
2、RAM(動態存儲)
應用程序安裝在這裡面越大越好。它在智能手機的作用類似於電腦上的「內存條」,比如在智能手機上實現多任務處理、粘貼和復制、運行大型游戲程序等就非常依 賴RAM內存,通常以MB為單位來表示RAM內存的大小,目前比較主流的就是512MB,而768MB、1GB、2GB。
3、手機內存(ROM)
這是靜態內存(ROM),操作系統被安裝在裡面。越大越好,目前主流的是8GB、16GB、32GB。
4、屏幕分辯率
屏的大小、視覺效果、分辨 率直接關繫到使用者的感覺,目前主流的是1024*768像素、1280*768像素、1280*720像素、1920*1080像素、1280*800等,也是越高越好。

⑼ 做android應用的性能測試有什麼指標參考嗎

主要監測:不同網路下啟動及業務的響應速度,不同時間段各種資源CPU,內存,電量,流量佔用情況,及連接超時、連接失敗等移動應用聯網性能問題

⑽ Android流暢度評估及卡頓優化

Google定義:界面呈現是指從應用生成幀並將其顯示在屏幕上的動作。要確保用戶能夠流暢地與應用互動,應用呈現每幀的時間不應超過16ms,以達到每秒60幀的呈現速度(為什麼是60fps?)。
如果應用存在界面呈現緩慢的問題,系統會不得不跳過一些幀,這會導致用戶感覺應用不流暢,我們將這種情況稱為卡頓。

來源於: Google Android的為什麼是60fps?

16ms意味著1000/60hz,相當於60fps。這是因為人眼與大腦之間的協作無法感知超過60fps的畫面更新。12fps大概類似手動快速翻動書籍的幀率, 這明顯是可以感知到不夠順滑的。24fps使得人眼感知的是連續線性的運動,這其實是歸功於運動模糊的效果。 24fps是電影膠圈通常使用的幀率,因為這個幀率已經足夠支撐大部分電影畫面需要表達的內容,同時能夠最大的減少費用支出。 但是低於30fps是 無法順暢表現絢麗的畫面內容的,此時就需要用到60fps來達到想要的效果,超過60fps就沒有必要了。如果我們的應用沒有在16ms內完成屏幕刷新的全部邏輯操作,就會發生卡頓。

首先要了解Android顯示1幀圖像,所經歷的完整過程。

如圖所示,屏幕顯示1幀圖像需要經歷5個步驟:

常見的丟幀情況: 渲染期間可能出現的情況,渲染大於16ms和小於16ms的情況:

上圖中應該繪制 4 幀數據 , 但是實際上只繪制了 3 幀 , 實際幀率少了一幀

判斷APP是否出現卡頓,我們從通用應用和游戲兩個緯度的代表公司標准來看,即Google的Android vitals性能指標和地球第一游戲大廠騰訊的PrefDog性能指標。

以Google Vitals的卡頓描述為准,即呈現速度緩慢和幀凍結兩個維度判斷:

PerfDog Jank計算方法:

幀率FPS高並不能反映流暢或不卡頓。比如:FPS為50幀,前200ms渲染一幀,後800ms渲染49幀,雖然幀率50,但依然覺得非常卡頓。同時幀率FPS低,並不代表卡頓,比如無卡頓時均勻FPS為15幀。所以平均幀率FPS與卡頓無任何直接關系)

當了解卡頓的標准以及渲染原理之後,可以得出結論,只有丟幀情況才能准確判斷是否卡頓。

mpsys 是一種在設備上運行並轉儲需要關注的系統服務狀態信息的 Android 工具。通過向 mpsys 傳遞 gfxinfo 命令,可以提供 logcat 格式的輸出,其中包含與錄制階段發生的動畫幀相關的性能信息。

藉助 Android 6.0(API 級別 23),該命令可將在整個進程生命周期中收集的幀數據的聚合分析輸出到 logcat。例如:

這些總體統計信息可以得到期間的FPS、Jank比例、各類渲染異常數量統計。

命令 adb shell mpsys gfxinfo <PACKAGE_NAME> framestats 可提供最近120個幀中,渲染各階段帶有納秒時間戳的幀時間信息。

關鍵參數說明:

通過gfxinfo輸出的幀信息,通過定時reset和列印幀信息,可以得到FPS(幀數/列印間隔時間)、丟幀比例((janky_frames / total_frames_rendered)*100 %)、是否有幀凍結(幀耗時>700ms)。
根據第2部分的通用應用卡頓標准,可以通過丟幀比例和幀凍結數量,准確判斷當前場景是否卡頓。並且通過定時截圖,還可以根據截圖定位卡頓的具體場景。

如上圖所示,利用gfxinfo開發的檢查卡頓的小工具,圖中參數和卡頓說明如下:

根據上面對gfxinfo的幀信息解析,可以准確計算出每一幀的耗時。從而可以開發出滿足騰訊PerfDog中關於普通卡頓和嚴重卡頓的判斷。

依賴定時截圖,即可准確定位卡頓場景。如下圖所示(此處以PerfDog截圖示例):

通過第3部分的卡頓評估方法,我們可以定位到卡頓場景,但是如何定位到具體卡頓原因呢。

首先了解卡頓問題定位工具,然後再了解常見的卡頓原因,即可通過復現卡頓場景的同時,用工具去定位具體卡頓問題。

重點就是,充分利用gfxinfo輸出的幀信息,對卡頓問題進行分類。

了解了高效定位卡頓的方法和卡頓問題定位工具,再熟悉一下常見的卡頓原因,可以更熟練的定位和優化卡頓。

SurfaceFlinger 負責 Surface 的合成,一旦 SurfaceFlinger 主線程調用超時,就會產生掉幀。
SurfaceFlinger 主線程耗時會也會導致 hwc service 和 crtc 不能及時完成,也會阻塞應用的 binder 調用,如 dequeueBuffer、queueBuffer 等。

後台進程活動太多,會導致系統非常繁忙,cpu io memory 等資源都會被佔用,這時候很容易出現卡頓問題,這也是系統這邊經常會碰到的問題。
mpsys cpuinfo 可以查看一段時間內 cpu 的使用情況:

當線程為 Runnable 狀態的時候,調度器如果遲遲不能對齊進行調度,那麼就會產生長時間的 Runnable 線程狀態,導致錯過 Vsync 而產生流暢性問題。

system_server 的 AMS 鎖和 WMS 鎖 , 在系統異常的情況下 , 會變得非常嚴重 , 如下圖所示 , 許多系統的關鍵任務都被阻塞 , 等待鎖的釋放 , 這時候如果有 App 發來的 Binder 請求帶鎖 , 那麼也會進入等待狀態 , 這時候 App 就會產生性能問題 ; 如果此時做 Window 動畫 , 那麼 system_server 的這些鎖也會導致窗口動畫卡頓。

Android P 修改了 Layer 的計算方法 , 把這部分放到了 SurfaceFlinger 主線程去執行, 如果後台 Layer 過多,就會導致 SurfaceFlinger 在執行 rebuildLayerStacks 的時候耗時 , 導致 SurfaceFlinger 主線程執行時間過長。

主線程執行 Input Animation Measure Layout Draw decodeBitmap 等操作超時都會導致卡頓 。

Activity resume 的時候, 與 AMS 通信要持有 AMS 鎖, 這時候如果碰到後台比較繁忙的時候, 等鎖操作就會比較耗時, 導致部分場景因為這個卡頓, 比如多任務手勢操作。

應用裡面涉及到 WebView 的時候, 如果頁面比較復雜, WebView 的性能就會比較差, 從而造成卡頓。

如果屏幕幀率和系統的 fps 不相符 , 那麼有可能會導致畫面不是那麼順暢. 比如使用 90 Hz 的屏幕搭配 60 fps 的動畫。

由上面的分析可知對象分配、垃圾回收(GC)、線程調度以及Binder調用 是Android系統中常見的卡頓原因,因此卡頓優化主要以下幾種方法,更多的要結合具體的應用來進行:

在計算機和通信領域,幀是一個包括「幀同步串列」的數字數據傳輸單元或數字數據包。
在視頻領域,電影、電視、數字視頻等可視為隨時間連續變換的許多張畫面,其中幀是指每一張畫面。

閱讀全文

與android性能指標相關的資料

熱點內容
dvd光碟存儲漢子演算法 瀏覽:757
蘋果郵件無法連接伺服器地址 瀏覽:963
phpffmpeg轉碼 瀏覽:672
長沙好玩的解壓項目 瀏覽:145
專屬學情分析報告是什麼app 瀏覽:564
php工程部署 瀏覽:833
android全屏透明 瀏覽:737
阿里雲伺服器已開通怎麼辦 瀏覽:803
光遇為什麼登錄時伺服器已滿 瀏覽:302
PDF分析 瀏覽:486
h3c光纖全工半全工設置命令 瀏覽:143
公司法pdf下載 瀏覽:382
linuxmarkdown 瀏覽:350
華為手機怎麼多選文件夾 瀏覽:683
如何取消命令方塊指令 瀏覽:350
風翼app為什麼進不去了 瀏覽:779
im4java壓縮圖片 瀏覽:362
數據查詢網站源碼 瀏覽:151
伊克塞爾文檔怎麼進行加密 瀏覽:893
app轉賬是什麼 瀏覽:163