導航:首頁 > 操作系統 > androidcpu位數

androidcpu位數

發布時間:2024-12-25 02:33:30

㈠ 如何獲取 android 設備的CPU核數,時鍾頻率以及內存大小

Device Year Class 的主要功能是根據 CPU核數、時鍾頻率 以及 內存大小 對設備進行分級。代碼很簡單,只包含兩個類:
DeviceInfo-> 獲取設備參數,
YearClass-> 根據參數進行分級。
下表是 Facebook 公司提供的分級標准,其中Year欄表示分級結果。

Year
Cores
Clock
RAM

2008 1 528MHz 192MB
2009 n/a 600MHz 290MB
2010 n/a 1.0GHz 512MB
2011 2 1.2GHz 1GB
2012 4 1.5GHz 1.5GB
2013 n/a 2.0GHz 2GB
2014 n/a >2GHz >2GB
關於輸出年份的計算方法可以參考源碼,本文只把一些比較常用的功能抽取出來做一個簡要介紹。
獲取 CPU 核數
我們都知道,Linux 中的設備都是以文件的形式存在,CPU 也不例外,因此 CPU 的文件個數就等價與核數。
Android 的 CPU 設備文件位於/sys/devices/system/cpu/目錄,文件名的的格式為cpu\d+。

root@generic_x86_64:/sys/devices/system/cpu # ls <b>cpu0</b> cpufreq
cpuidle
kernel_max
modalias
offline
online
possible
power
present
uevent

統計一下文件個數便可以獲得 CPU 核數。

public static int getNumberOfCPUCores() {
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.GINGERBREAD_MR1) {
// Gingerbread doesn't support giving a single application access to both cores, but a
// handful of devices (Atrix 4G and Droid X2 for example) were released with a al-core
// chipset and Gingerbread; that can let an app in the background run without impacting
// the foreground application. But for our purposes, it makes them single core.
return 1;
}
int cores;
try {
cores = new File("/sys/devices/system/cpu/").listFiles(CPU_FILTER).length;
} catch (SecurityException e) {
cores = DEVICEINFO_UNKNOWN;
} catch (NullPointerException e) {
cores = DEVICEINFO_UNKNOWN;
}
return cores;
}

private static final FileFilter CPU_FILTER = new FileFilter() {
@Override
public boolean accept(File pathname) {
String path = pathname.getName();
//regex is slow, so checking char by char.
if (path.startsWith("cpu")) {
for (int i = 3; i < path.length(); i++) {
if (path.charAt(i) < '0' || path.charAt(i) > '9') {
return false;
}
}
return true;
}
return false;
}
};

獲取時鍾頻率
獲取時鍾頻率需要讀取系統文件 -/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq或者/proc/cpuinfo。
我的 Android 模擬器中並沒有cpuinfo_max_freq文件,因此只能讀取/proc/cpuinfo。
/proc/cpuinfo包含了很多 cpu 數據。

processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 70
model name : Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz
stepping : 1
cpu MHz : 0.000
cache size : 1024 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 4
wp : yes

代碼如下:

public static int getCPUMaxFreqKHz() {
int maxFreq = DEVICEINFO_UNKNOWN;
try {
for (int i = 0; i < getNumberOfCPUCores(); i++) {
String filename =
"/sys/devices/system/cpu/cpu" + i + "/cpufreq/cpuinfo_max_freq";
File cpuInfoMaxFreqFile = new File(filename);
if (cpuInfoMaxFreqFile.exists()) {
byte[] buffer = new byte[128];
FileInputStream stream = new FileInputStream(cpuInfoMaxFreqFile);
try {
stream.read(buffer);
int endIndex = 0;
//Trim the first number out of the byte buffer.
while (buffer[endIndex] >= '0' && buffer[endIndex] <= '9'
&& endIndex < buffer.length) endIndex++;
String str = new String(buffer, 0, endIndex);
Integer freqBound = Integer.parseInt(str);
if (freqBound > maxFreq) maxFreq = freqBound;
} catch (NumberFormatException e) {
//Fall through and use /proc/cpuinfo.
} finally {
stream.close();
}
}
}
if (maxFreq == DEVICEINFO_UNKNOWN) {
FileInputStream stream = new FileInputStream("/proc/cpuinfo");
try {
int freqBound = parseFileForValue("cpu MHz", stream);
freqBound *= 1000; //MHz -> kHz
if (freqBound > maxFreq) maxFreq = freqBound;
} finally {
stream.close();
}
}
} catch (IOException e) {
maxFreq = DEVICEINFO_UNKNOWN; //Fall through and return unknown.
}
return maxFreq;
}

獲取內存大小
如果 SDK 版本大於等於JELLY_BEAN,可以通過ActivityManager來獲取內從大小。

ActivityManager.MemoryInfo memInfo = new ActivityManager.MemoryInfo();
ActivityManager am = (ActivityManager) c.getSystemService(Context.ACTIVITY_SERVICE);
am.getMemoryInfo(memInfo);

如果版本低於JELLY_BEAN,則只能讀取系統文件了。

FileInputStream stream = new FileInputStream("/proc/meminfo");
totalMem = parseFileForValue("MemTotal", stream);

㈡ android-ndk-r9d 32位系統能用么嗎

android-ndk-r9d 32位系統可以用。
cpu的位是指一次性可處理的數據量是多少,1位元組=8位,32位處理器可以一次性處理4個位元組的數據量,依次類推。32位操作系統針對的32位的CPU設計。64位操作系統針對的64位的CPU設計。操作系統只是硬體和應用軟體中間的一個平台。CPU從原來的8位,16位,到現在的32位和64位。

㈢ 64位ARM CPU在android 32位和64位版性能有多大差別

安卓手機目前沒有32位和64位之分,只有安卓平台的版本劃分。六十四位的能比三十二位的運算速度快

㈣ 如何查看Android手機CPU類型是armeabi,armeabi-v7a,還是arm64-v8

1.armeabiv-v7a: 第7代及以上的 ARM 處理器.
2.arm64-v8a: 第8代、64位ARM處理器,現在很多手機使用X86的手機.紅米11.三星 Galaxy S6是其中之一。
3.armeabi: 第5代、第6代的ARM處理器,早期的手機用的比較多。
4.x86: 平板、模擬器用得比較多。

使用命令:adb shell getprop ro.proct.cpu.abi

查看Android設備的CPU架構信息,可以使用命令來完成:
1、adb shell
2、cat /proc/cpuinfo

解析說明:
processor: 0/1 表示第幾個核。
BogoMIPS:偽MIPS,用於測量CPU速度
Features:表示當前CPU所支持的特性,比如neon,vfp等。
CPU architecture:7表示arm-v7,8表示arm-v8

閱讀全文

與androidcpu位數相關的資料

熱點內容
prom文件夾 瀏覽:726
不規則土方的演算法 瀏覽:209
tor加密貨幣網站 瀏覽:449
linux轉ansi 瀏覽:736
網站源碼怎麼查 瀏覽:687
高cpu雲伺服器 瀏覽:365
androidwebrtcaecm 瀏覽:981
阿里雲部署java 瀏覽:636
雲是不是就是個大的伺服器 瀏覽:581
如何建立linux日誌管理伺服器 瀏覽:772
悟空頭圖標是什麼APP 瀏覽:555
linuxandroid虛擬機 瀏覽:281
ps李濤pdf 瀏覽:638
linuxfork線程 瀏覽:97
易語言編譯改名 瀏覽:723
阿里伺服器都提供什麼 瀏覽:756
cf打開伺服器接不上怎麼辦 瀏覽:901
linux下more命令 瀏覽:402
des演算法運算位數 瀏覽:375
珠海建行貸款解壓 瀏覽:635