app專項效能測試——獲取手機cpu、記憶體、流量
1、Cpu獲取
瞭解過騰訊GT工具的原始碼,他們用的是通過讀取/proc/stat的資料,將每一個核的cpu使用跟閒置資料提取。使用率永遠是增量式計算。計算方法為100*(cpu忙時增量-cpu整體增量),從計算方法來看,可能會導致負數出現。 getProcessCpuUsage:計算程序的CPU使用率,主要通過"/proc/" + pid + "/stat"來計算,在這裡回京過一系列計算,拿到程序的CPU時間片。這樣的方式比較麻煩,但是相容性可能會好一些。下面方法是直接adb shell top -n來找到應用的top資訊,直接取cpu那一列的數
// 獲取手機指定packagename的cpu佔比 public static String getCPU(String PackageName) { String Cpu = null; try { Runtime runtime = Runtime.getRuntime(); Process proc = runtime.exec("adb shell top -n 1| grep " + PackageName); try { if (proc.waitFor() != 0) { System.err.println("exit value = " + proc.exitValue()); } BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream())); StringBuffer stringBuffer = new StringBuffer(); String line = null; while ((line = in.readLine()) != null) { stringBuffer.append(line + " "); } String str1 = stringBuffer.toString(); // System.out.println("返回是#####"+str1); // 以空格區分正則 String[] toks = str1.split(" +"); /// / String str2 = str1.substring(str1.indexOf(" " + PackageName) - 46, str1.indexOf(" " + PackageName)); Cpu = toks[4]; // System.out.println("當前程序的cpu佔用是*** " + Cpu ); } catch (InterruptedException e) { System.err.println(e); } finally { try { proc.destroy(); } catch (Exception e2) { } } } catch (Exception StringIndexOutOfBoundsException) { System.out.println("請檢查裝置是否連線"); } return Cpu; }
2、記憶體獲取
adb shell dumpsys meminfo|grep packagename
public static double getMemory(String PackageName) { double Heap = 0; try { Runtime runtime = Runtime.getRuntime(); Process proc = runtime.exec("adb shell dumpsys meminfo|grep " + PackageName); try { if (proc.waitFor() != 0) { System.err.println("exit value = " + proc.exitValue()); } BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream())); StringBuffer stringBuffer = new StringBuffer(); String line = null; while ((line = in.readLine()) != null) { stringBuffer.append(line + " "); } String str1 = stringBuffer.toString(); String str2 = str1.substring(str1.indexOf(": "+PackageName) - 12, str1.indexOf(": "+PackageName)).trim(); String str3 = str2.substring(0, str2.indexOf("K")); str3 = str3.trim().replace(",",""); Heap = Double.parseDouble(str3) / 1024; DecimalFormat df = new DecimalFormat("#.000"); String memory = df.format(Heap); Heap = Double.parseDouble(memory); System.out.println(Heap + "MB"); } catch (InterruptedException e) { System.err.println(e); } finally { try { proc.destroy(); } catch (Exception e2) { } } } catch (Exception StringIndexOutOfBoundsException) { System.out.print("請檢查裝置是否連線"); } return Heap; }
3、獲取流量
通過看 /proc/$pid/net/dev,檢視應用流量使用情況。wlan0: 一行顯示了接受、傳送流量的位元組數,把兩個相加就是app累計消耗的流量(bytes),除以1024得到kbps。開啟手機飛航模式、會使該資料清零。
下面通過時間查計算流量,兩次獲取流量除以時間(下面用的是1秒,所以得到的每秒消耗流量 kbps/s)
public static double getFlowAction(String PackageName) { double flowAction = 0; try { String Pid = PID(PackageName); Runtime runtime = Runtime.getRuntime(); Process proc = runtime.exec("adb shell cat /proc/" + Pid + "/net/dev"); try { if (proc.waitFor() != 0) { System.err.println("exit value = " + proc.exitValue()); } BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream())); StringBuffer stringBuffer = new StringBuffer(); String line = null; while ((line = in.readLine()) != null) { stringBuffer.append(line + " "); } String str1 = stringBuffer.toString(); String str2 = str1.substring(str1.indexOf("wlan0:"), str1.indexOf("wlan0:") + 100); // System.out.println("先獲取的句子 " + str2); // 空格分成字串陣列取第2個,第10個數,分別是傳送流量和接受流量 String[] toks = str2.split(" +"); String str4 = toks[1]; String str6 = toks[9]; int b = Integer.parseInt(str4); int a = Integer.parseInt(str6); double sendFlow = a / 1024 ; double revFlow = b / 1024 ; flowAction = sendFlow + revFlow; System.out.println("當前應用使用流量為: " + flowAction + "Kbps"); } catch (InterruptedException e) { System.err.println(e); } finally { try { proc.destroy(); } catch (Exception e2) { } } } catch (Exception StringIndexOutOfBoundsException) { System.out.println("請檢查裝置是否連線"); } return flowAction; } public static double getFlow() { double flow = 0; double flowbefore = 0; double flowafter = 0; flowbefore = getFlowAction("com.umetrip.android.msky.app"); try { sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } flowafter = getFlowAction("com.umetrip.android.msky.app"); flow = flowafter - flowbefore; return flow; }
相關推薦
app專項效能測試——獲取手機cpu、記憶體、流量
1、Cpu獲取瞭解過騰訊GT工具的原始碼,他們用的是通過讀取/proc/stat的資料,將每一個核的cpu使用跟閒置資料提取。使用率永遠是增量式計算。計算方法為100*(cpu忙時增量-cpu整體增量),從計算方法來看,可能會導致負數出現。 getProcessCpuUsag
loadrunner效能測試,手機app
本文從原理與細節上詳細介紹一下loadrunner錄製APP指令碼,在這之前本人依照網上步驟試驗多次仍不成功,原因是網路代理配置錯誤。 測試方法 loadrunner壓力測試APP.png APP的壓力測試與WEB或TCP的略有不同,loadrunner錄製網頁
獲取Android手機CPU型別 ARM、ARMV7、NEON
1 檢視手機CPU資訊 cmd——adb shell——cd /proc------cat cpuinfo 2 獲取cpu的是arm指令集,armv7指令集、還是neon指令集 /** * * [獲取cpu型別和架構] * * @return
linux調優:按照CPU、記憶體、磁碟IO、網路效能監測
系統優化是一項複雜、繁瑣、長期的工作,優化前需要監測、採集、測試、評估,優化後也需要測試、採集、評估、監測,而且是一個長期和持續的過程,不 是說現在優化了,測試了,以後就可以一勞永逸了,也不是說書本上的優化就適合眼下正在執行的系統,不同的系統、不同的硬體、不同的應用優化的重點也不同、 優化的
手機APP介面:設計一個獲取手機驗證碼的功能
現在的專案中,都會涉及到一個手機驗證碼獲取功能 我們今天就來探討下如何更好的設計好這個看似小的功能 給APP設計一個獲取手機驗證碼的介面 根據業務邏輯,初步總結了可能會有以下業務場景 需要用到手機驗證碼的驗證功能 大家來看下圖片吧 login:登入 reg
Linux下java獲取CPU、記憶體、磁碟IO、網路頻寬使用率
原文地址:https://www.cnblogs.com/gisblogs/p/3985393.html 一、CPU 使用proc檔案系統,"proc檔案系統是一個偽檔案系統,它只存在記憶體當中,而不佔用外存空間。它以檔案系統的方式為訪問系統核心資料的操作提供介面。使用者和應用程式可以通過p
批量ssh登入,獲取作業系統、CPU、記憶體、硬碟資訊<shell>
說明:該指令碼讀取machine.txt檔案中的機器名,然後批量ssh登入,獲取每臺機器的作業系統,CPU,記憶體,硬碟等資訊。 使用方法:將檔案儲存為sh,chmod +x filename 為該sh檔案賦予執行許可權。 for line in `cat machine.txt` do
效能測試基礎——(CPU)轉
效能測試基礎——(CPU) 發表於:2017-8-01 11:12 作者:aceaoh 來源:51Testing軟體測試網採編 字型:大 中 小 | 上一篇 | 下一篇 |我要投稿 |&
漫遊測試之效能測試(4.4.Linux下記憶體\磁碟\CPU問題的判斷方法)
以vmstat這個工具查詢出來的結果的欄位為解釋的依據。其它監控工具,只需要瞭解每個欄位的說明,其原理類似。 [email protected]:~# vmstat 2 procs -----------memory---------- ---swap-- --
效能測試--系統吞吐量(TPS)、使用者併發量、效能測試概念和公式
PS:下面是效能測試的主要概念和計算公式,記錄下: 一.系統吞度量要素: 一個系統的吞度量(承壓能力)與request對CPU的消耗、外部介面、IO等等緊密關聯。 單個reqeust 對CPU消耗越高,外部系統介面、IO影響速度越慢,系統吞吐能力越低,反之越高。 系統吞吐量幾個重要引數:QPS
通過python呼叫adb命令對app進行效能測試(6 -1)
上篇文章中講述了adb是什麼,以及常用的命令,下面我們來看下通過adb來檢視手機裝置中的效能引數,首先要檢視apk的包名和預設Activity的名字有好幾種方式,下面介紹2種 第一種 1 開啟cmd 切換目錄D:\tool\android-sdk_r24.
Linux效能優化之CPU、記憶體、IO優化
Linux 的效能進行監測,以下是 VPSee 常用的工具: 工具 簡單介紹 top 檢視程序活動狀態以及一些系統狀況 vmstat 檢視系統狀態、硬體和系統資訊等 iostat 檢視CPU 負載,硬碟狀況 sar 綜合工具,檢視
Qt linux獲取cpu使用率、記憶體、網路收發速度、磁碟讀寫速度、磁碟剩餘空間等
#include "resource_minitor.h" #include "sys/statfs.h" resource_minitor::resource_minitor(QObject *parent) : QObject(parent) { connect(&monito
獲取手機號碼所屬省份、城市、運營商Api介面
/** * 要查詢的電話號碼歸屬地 * http://www.baidu.com/api.php?m=Tel&p=13281000000 * {"province":"u56dbu5ddd","city":"u6210u90fd","supplier":"u8
python功能模組之psutil------ Linux效能(CPU、磁碟、記憶體、網絡卡)監控
採集系統的基本效能資訊包括CPU、記憶體、磁碟、網路等,可以完整描述當前系統的執行狀態及質量。psutil模組已經封裝了這些方法,使用者可以根據自身的應用場景,呼叫相應的方法來滿足需求,非常簡單實用。 (1)CPU資訊 Linux作業系統的CPU利用率有以下幾個部分:
如何利用Java獲取系統的資訊(CPU、記憶體、各碟符使用情況)
/*********************************************************************** * Project: gpsAdapter * Note: Console Application ***********
Linux按照CPU、記憶體、磁碟IO、網路效能監測(強烈推薦)
系統優化是一項複雜、繁瑣、長期的工作,優化前需要監測、採集、測試、評估,優化後也需要測試、採集、評估、監測,而且是一個長期和持續的過程,不 是說現在優化了,測試了,以後就可以一勞永逸了,也不是說書本上的優化就適合眼下正在執行的系統,不同的系統、不同的硬體、不同的應用優化的重
重要硬體瞭解(硬碟、記憶體、CPU、顯示卡)通常是衡量電腦效能的關鍵指標
磁碟,是計算機的外部儲存器中類似磁帶的裝置,將圓形的磁性碟片裝在一個方的密封盒子裡,這樣做的目的是為了防止磁碟表面劃傷,導致資料丟失。磁碟有軟磁碟,硬磁碟。硬磁碟就是機械硬碟。硬碟,是電腦主要的儲存媒介之一,由一個或者多個鋁製或者玻璃制的碟片組成。碟片外覆蓋有鐵磁性材料。硬碟
Android獲取手機Cpu溫度
在最近的專案中,需要獲取手機當前Cpu溫度,網上也有很多文章介紹,這裡記錄一下。 獲取CPU溫度的方式: 在Android系統中,獲取CPU溫度的方法並沒有直接提供給我們開發者,我們可以通過兩種方式來獲取Cpu溫度: 1、 通過讀取手機感測器sensor的溫度近似於手機CPU溫度(當然這種方式只是一個近似的值
Linux下java獲取CPU、記憶體、磁碟IO、網路IO
獲取linux命令執行結果 下面的程式碼用於獲取執行一個Linux命令之後的結果,函式返回一個字串,即命令的執行結果 import java.io.IOException; import java.io.InputStreamReader; i