Cómo detectar la velocidad de la CPU android?

Me gustaría detectar la rapidez con que el dispositivo en el que se ejecuta mi aplicación Android.

¿Hay alguna API para hacerlo en Android? ¿O tengo que compararlo por mí mismo?

Si el dispositivo tiene CPU lenta me gustaría desactivar algunas operaciones que consumen mucho tiempo como animaciones o limitar el número máximo de solicitud HTTP simultánea.

La mejor manera de hacerlo en mi opinión es monitorear el tiempo que toma para hacer estas acciones. Si está tomando demasiado tiempo, entonces el sistema es demasiado lento y puede desactivar funciones de fantasía hasta que sea lo suficientemente rápido.

Leer la velocidad de la CPU u otras especificaciones e intentar juzgar la velocidad del sistema es una mala idea. Los futuros cambios de hardware podrían hacer que estas especificaciones carezcan de sentido.

Mira el Pentium 4 vs el Core 2, por ejemplo. ¿Cuál es la CPU más rápida, un Pentium 4 de 2,4 GHz o el Core 2 de 1,8 GHz? ¿Es un Opteron de 2 GHz más rápido que un Itanium 2 de 1,4 GHz? ¿Cómo vas a saber qué tipo de CPU ARM es realmente más rápido?

Para obtener las calificaciones de velocidad del sistema para Windows Vista y 7 Microsoft realmente marca la máquina. Este es el único método a medio camino para determinar las capacidades del sistema.

Parece que un buen método es usar SystemClock.uptimeMillis ().

Intente leer /proc/cpuinfo que contenga información de la CPU:

  String[] args = {"/system/bin/cat", "/proc/cpuinfo"}; ProcessBuilder pb = new ProcessBuilder(args); Process process = pb.start(); InputStream in = process.getInputStream(); //read the stream 

Por favor, consulte el siguiente enlace que proporcionará los datos relacionados con la CPU

Basado en la solución @dogbane y esta respuesta , esta es mi implementación para obtener el valor de 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; } 
  • ¿Por qué son las anotaciones bajo Android un problema de rendimiento (lento)?
  • Android Map Rendimiento pobre debido a muchas superposiciones?
  • No se puede ejecutar "ANY" reaccionar proyecto ejemplo nativo
  • Android: rendimiento lento con una gran imagen en ImageView
  • Rendimiento en Android Juego
  • Manejo de mapas de bits grandes
  • Heap sigue aumentando en Google Map API V2
  • FindViewById vs referencia local en la actividad
  • La mejor manera de poblar las vistas
  • ¿Cómo puedo mejorar el rendimiento (primer tiempo de carga, suavidad de desplazamiento) de un GridView que representa muchas imágenes grandes?
  • Webview para ampliar la presentación con el tipo de vista
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.