¿El mejor método para medir el tiempo de ejecución en Android?
¿Cuál es el mejor método para medir el tiempo de ejecución del fragmento de código de Android?
Tengo una sección de código antes y después de lo cual quiero colocar marcas de tiempo para averiguar su tiempo de ejecución (por ejemplo, uno en onCreate()
y otro en onDestroy()
método de actividad).
- Cómo agregar etiquetas en xml en android? Y cómo guardar ese archivo xml?
- Android: No se puede resolver el tipo java.awt.Image. Se hace referencia indirectamente a los archivos .class requeridos
- Cajón de navegación onNavigationDrawerItemSelected llamado antes de MainActivity onCreate?
- Android: firma digital con Bezier
- Android Froyo configuración ringtone
He intentado Time.toMillies(false)
, pero sólo me devuelve segundos (con 000
constantes al final). También intenté dos funciones de java: System.currentTimeMillis()
y System.nanoTime()
. La primera devuelve milisegundos de época, la segunda no.
¿Cuál sería la mejor manera de medir el tiempo de ejecución y obtener una buena precisión?
- Error en algunos dispositivos - no se pudo encontrar la clase 'com.google.android.gms.measurement.internal.zzz'
- YouTubePlayerFragment en ListView con AppCompatActivity Error
- ¿Cómo puedo implementar el equivalente RxJava de INotifyPropertyChanged para hacer un modelo de datos Observable?
- No se puede sobrecargar el método en la interfaz AIDL
- ¿Cómo mover / renombrar el archivo de almacenamiento de aplicaciones internas a almacenamiento externo en Android?
- Medición de la frecuencia cardíaca usando Xiaomi MiBand y BLE
- ¿Cómo hacer que el botón de cancelar trabaje en llamada sdk vinculada en la vista web android?
- Rotar vídeo con mp4parser de acuerdo con la cámara utilizada
¿Qué pasa con TimingLogger ?
De la documentación de TimingLogger :
TimingLogger timings = new TimingLogger(YOUR_TAG, "methodA"); // ... do some work A ... timings.addSplit("work A"); // ... do some work B ... timings.addSplit("work B"); // ... do some work C ... timings.addSplit("work C"); timings.dumpToLog();
Y el volcado se verá así:
D/TAG ( 3459): methodA: begin D/TAG ( 3459): methodA: 9 ms, work A D/TAG ( 3459): methodA: 1 ms, work B D/TAG ( 3459): methodA: 6 ms, work C D/TAG ( 3459): methodA: end, 16 ms
No olvide activar su etiqueta: adb shell setprop log.tag.YOUR_TAG VERBOSE
¿Cuál sería la mejor manera de medir el tiempo de ejecución?
System.nanoTime()
es probablemente una buena opción. Jake Wharton está usando eso con Hugo , por ejemplo.
Y obtener una buena precisión
Esto no es estrictamente posible, ya que cualquier cosa puede suceder en el dispositivo mientras se ejecuta el método. Estos factores externos afectarán las mediciones de tiempo, robando tiempo de CPU, atando canales de E / S, etc. Necesitará hacer un promedio de sus pruebas a través de varias ejecuciones para tratar de calcular el promedio de esos factores externos, y la precisión / precisión sufrirá como un error. resultado.
Y, como señala Marcin Orlowski, para averiguar por qué está consumiendo cierto tiempo, use Traceview.
Proceso que básicamente pregunta acerca de se llama perfiles . Hay herramientas para ayudarte a hacer eso en Android. Ver el perfil del artículo con Traceview y dmtracedump en el sitio de desarrolladores.
- ¿Cuáles son los estados del hilo de Dalvik?
- Indicador / icono de Android ExpandableListView siempre estirado