Wie erkennt man die Android-CPU-Geschwindigkeit?

Lesezeit: 3 Minuten

Wie erkennt man die Android CPU Geschwindigkeit
Dariusz Bacinski

Ich möchte feststellen, wie schnell das Gerät ist, auf dem meine Android-Anwendung läuft?

Gibt es eine API dafür auf Android? Oder muss ich das selbst vergleichen?

Wenn das Gerät eine langsame CPU hat, möchte ich einige zeitaufwendige Vorgänge wie Animationen deaktivieren oder die maximale Anzahl gleichzeitiger HTTP-Anfragen begrenzen.

Wie erkennt man die Android CPU Geschwindigkeit
Zan Lynx

Der beste Weg, dies meiner Meinung nach zu tun, besteht darin, die Zeit zu überwachen, die für diese Aktionen benötigt wird. Wenn es zu lange dauert, ist das System zu langsam und Sie können ausgefallene Funktionen deaktivieren, bis es schnell genug ist.

Es ist keine gute Idee, die CPU-Geschwindigkeit oder andere Spezifikationen zu lesen und zu versuchen, die Systemgeschwindigkeit zu beurteilen. Zukünftige Hardwareänderungen können diese Spezifikationen bedeutungslos machen.

Schauen Sie sich zum Beispiel den Pentium 4 vs. den Core 2 an. Welche ist die schnellere CPU, ein 2,4 GHz Pentium 4 oder der 1,8 GHz Core 2? Ist ein 2 GHz Opteron schneller als ein 1,4 GHz Itanium 2? Woher wollen Sie wissen, welche Art von ARM-CPU tatsächlich schneller ist?

Um Systemgeschwindigkeitsbewertungen für Windows Vista und 7 zu erhalten, führt Microsoft tatsächlich Benchmarks der Maschine durch. Dies ist die einzige halbwegs genaue Methode, um die Systemfähigkeiten zu bestimmen.

Es sieht aus wie eine gute Methode zu verwenden SystemClock.uptimeMillis().

  • Soll ich einfach die Zeit mit Hilfe von System.currentTimeMillis() zählen?

    – Dariusz Bacinski

    3. Feb. ’11 um 14:22

  • @darbat: developer.android.com/reference/android/os/SystemClock.html Versuchen Sie es mit uptimeMillis().

    – Zan Lynx

    3. Feb. ’11 um 15:10

  • @ZanLynx: Ich versuche, das gleiche Problem zu lösen, aber meiner Erfahrung nach ist das CPU-Benchmarking auf Android aufgrund von Hintergrundprozessen sehr ungenau. Haben Sie einen Weg gefunden, das zu mildern?

    – Simplex

    16. Januar ’12 um 13:11

  • @JonnyBoy: Tu einfach das Beste, was du kannst. Wenn Sie sich spontan anpassen können, indem Sie wichtige Vorgänge zeitlich planen, ist das das Beste. Viele GUI-Animationen tun dies, indem Zwischenbilder übersprungen werden, wenn das System zu ausgelastet ist.

    – Zan Lynx

    16. Januar ’12 um 17:41

Versuchen Sie zu lesen /proc/cpuinfo die CPU-Informationen enthält:

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

   Process process = pb.start();
   InputStream in = process.getInputStream();
   //read the stream

  • Das ist eine ziemlich schlechte Idee. Ich meine, es wird funktionieren. Aber was wird Ihre App tun, wenn sie auf einer zukünftigen CPU-Version ausgeführt wird, die bei einer langsameren Taktrate mehr funktioniert? Wenn die App dies auf Pentium 4s getan hätte, würde die App beim Erscheinen von Core2 dumm aussehen.

    – Zan Lynx

    2. Februar ’11 um 15:37

  • Entschuldigung, ich hätte meinen Kommentar mehr an Darbat richten sollen.

    – Zan Lynx

    2. Februar ’11 um 15:43

1641968114 718 Wie erkennt man die Android CPU Geschwindigkeit
ahmed_khan_89

Basierend auf der @dogbane-Lösung und dieser Antwort ist dies meine Implementierung, um den BogoMIPS-Wert zu erhalten:

 /**
 * 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;
}

  • Ich musste die geteilte Regex im obigen Code ändern, um einen gültigen Messwert für bogoMIPS zu erhalten: String[] cpuInfoArray =cpuInfo.split(":|\n"); Beifall

    – BillyRayCyrus

    8. Juni ’15 um 18:25


Wie erkennt man die Android CPU Geschwindigkeit
chiranjib

Bitte beziehen Sie sich auf den folgenden Link, der die CPU-bezogenen Daten bereitstellt

.

423650cookie-checkWie erkennt man die Android-CPU-Geschwindigkeit?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy