Как определить скорость процессора Android? - PullRequest
25 голосов
/ 02 февраля 2011

Я хотел бы определить, насколько быстрым является устройство, на котором работает мое приложение Android?

Есть ли API для Android? Или я должен сам это сделать?

Если устройство имеет медленный процессор, я бы хотел отключить некоторые трудоемкие операции, такие как анимация, или ограничить максимальное количество одновременных HTTP-запросов.

Ответы [ 4 ]

25 голосов
/ 02 февраля 2011

На мой взгляд, лучший способ сделать это - отслеживать время, необходимое для выполнения этих действий.Если это занимает слишком много времени, то система работает слишком медленно, и вы можете отключить необычные функции, пока она не станет достаточно быстрой.

Чтение скорости процессора или других характеристик и попытка оценить скорость системы - плохая идея,Будущие аппаратные изменения могут сделать эти спецификации бессмысленными.

Посмотрите, например, на Pentium 4 против Core 2.Какой процессор быстрее, Pentium 4 2,4 ГГц или Core 2 1,8 ГГц?2 ГГц Opteron быстрее, чем 1,4 ГГц Itanium 2?Как вы узнаете, какой тип процессора ARM на самом деле быстрее?

Чтобы получить оценки скорости системы для Windows Vista и 7, Microsoft фактически тестирует производительность компьютера.Это единственный точный метод определения возможностей системы.

Похоже, что хорошим методом является использование SystemClock.uptimeMillis ().

8 голосов
/ 02 февраля 2011

Попробуйте прочитать /proc/cpuinfo, который содержит информацию о процессоре:

   String[] args = {"/system/bin/cat", "/proc/cpuinfo"};
   ProcessBuilder pb = new ProcessBuilder(args);

   Process process = pb.start();
   InputStream in = process.getInputStream();
   //read the stream
2 голосов
/ 07 января 2015

Исходя из решения @dogbane и этого ответа , это моя реализация для получения значения BogoMIPS:

 /**
 * parse the CPU info to get the BogoMIPS.
 * 
 * @return the BogoMIPS value as a String
 */
public static String getBogoMipsFromCpuInfo(){
    String result = null;
    String cpuInfo = readCPUinfo();
    String[] cpuInfoArray =cpuInfo.split(":");
    for( int i = 0 ; i< cpuInfoArray.length;i++){
        if(cpuInfoArray[i].contains("BogoMIPS")){
            result = cpuInfoArray[i+1];
            break;
        }
    }
    if(result != null) result = result.trim();
    return result;
}

/**
 * @see {https://stackoverflow.com/a/3021088/3014036}
 *
 * @return the CPU info.
 */
public static String readCPUinfo()
{
    ProcessBuilder cmd;
    String result="";
    InputStream in = null;
    try{
        String[] args = {"/system/bin/cat", "/proc/cpuinfo"};
        cmd = new ProcessBuilder(args);
        Process process = cmd.start();
        in = process.getInputStream();
        byte[] re = new byte[1024];
        while(in.read(re) != -1){
            System.out.println(new String(re));
            result = result + new String(re);
        }
    } catch(IOException ex){
        ex.printStackTrace();
    } finally {
            try {
                if(in !=null)
                in.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
    }
    return result;
}
1 голос
/ 02 февраля 2011

Пожалуйста, обратитесь к следующей ссылке, которая предоставит связанные с процессором данные

...