Traceview: qué es, herramienta de trazado y perfilado Android

Autor: IT Sectr Publicado: 2026-03-30 Tiempo de lectura: 9 min

Traceview es una herramienta gráfica de trazado integrada en Android Studio que registra y visualiza la ejecución de métodos de la aplicación en términos de tiempo y recursos de CPU. A diferencia de Systrace, que muestra procesos del sistema a nivel de kernel, Traceview se centra en métodos Java y Kotlin dentro de la aplicación, llamados en cadena desde la entrada del usuario hasta el renderizado de la UI. Según Google, 2024, la herramienta permite encontrar cuellos de botella de rendimiento a nivel de llamadas individuales y optimizar el código antes del lanzamiento.

Conclusiones clave

  • Traceview es un perfilador gráfico de métodos Android en Android Studio basado en System Tracing
  • El trazado registra la duración de cada método, el número de llamadas y el tiempo de CPU
  • La línea de tiempo de Traceview muestra las llamadas en orden cronológico con anidación de hilos
  • El perfilado ayuda a encontrar métodos lentos, asignaciones excesivas y bloqueos
  • Integración con Android Profiler y la API Debug.startMethodTracing para captura flexible

Qué es Traceview en Android

Traceview es un perfilador gráfico integrado en Android Studio que muestra trazas de ejecución de métodos de aplicaciones Android como una línea de tiempo y una tabla de llamadas. Forma parte del SDK de Android y está disponible a través de Android Profiler desde Android Studio 3.0, así como a través de la utilidad de línea de comandos dmtracedump.

Propósito de la herramienta

La tarea principal de Traceview es ayudar a los desarrolladores a encontrar los métodos que consumen más tiempo de CPU. A diferencia del registro simple, Traceview registra la hora exacta de entrada y salida de cada método, construye un Call Chart y un árbol Top-Down, lo que permite detectar visualmente anomalías de rendimiento. La herramienta es especialmente útil al perfilar el hilo de UI, donde un retraso de 16 ms provoca la pérdida de un fotograma.

Historia y desarrollo

Traceview apareció por primera vez en las primeras versiones del SDK de Android como una utilidad independiente para ver archivos .trace. Con el lanzamiento de Android Studio 3.0 (2017), pasó a formar parte de Android Profiler, obteniendo integración con líneas de tiempo en vivo de CPU, memoria y red. Según Google I/O 2018, el equipo de Android Studio continúa desarrollando el perfilador, añadiendo soporte para código nativo a través de systrace y perfetto. En las versiones actuales de Android Studio, Traceview funciona sobre el formato Perfetto pero mantiene la compatibilidad hacia atrás con el formato .trace clásico.

Cómo funciona Traceview

Traceview recibe datos del mecanismo System Tracing en Android Runtime (ART). Cuando una aplicación se inicia con el trazado habilitado, ART registra las marcas de tiempo de inicio y fin de cada método ejecutado, incluyendo el nombre de la clase, el nombre del método y el ID del hilo.

kotlin
// Inicio del trazado en el código de la aplicación
Debug.startMethodTracing("app_trace")

// Sección crítica del código para el perfilado
loadHeavyData()

// Detención del trazado — archivo guardado en el dispositivo
Debug.stopMethodTracing()

System Tracing opera a nivel de máquina virtual ART y registra cada llamada a método con precisión de microsegundos. Los datos se escriben en un buffer circular para minimizar el impacto en el rendimiento de la aplicación. Cuando el trazado se detiene, el buffer se vacía a un archivo .trace en el almacenamiento interno del dispositivo.

Formato del archivo .trace

Un archivo .trace contiene un encabezado con la versión del formato y la hora de inicio, seguido de registros para cada llamada: ID del hilo, ID del método, marca de tiempo de entrada y marca de tiempo de salida. Android Studio carga automáticamente el archivo .trace y construye dos vistas principales: el Panel de línea de tiempo para la cronología y el Panel de perfil para la jerarquía de llamadas. Por defecto, el tamaño máximo del buffer es de 8 MB, pero se puede aumentar mediante Debug.startMethodTracing(filename, maxSize).

Características clave de Traceview

Traceview proporciona varias vistas de datos complementarias, cada una abordando una tarea específica en el análisis de rendimiento.

Call Chart (gráfico de llamadas)

Call Chart es una línea de tiempo horizontal donde cada hilo se muestra como un carril separado. Los métodos se muestran como rectángulos de colores: el ancho del rectángulo es proporcional al tiempo de ejecución, y el anidamiento refleja la jerarquía de llamadas. Si un método llama a otro método, el rectángulo hijo se dibuja dentro del rectángulo padre. Esta visualización permite identificar instantáneamente las operaciones que bloquearon el hilo.

Árboles Top-Down y Bottom-Up

El árbol Top-Down muestra el tiempo de ejecución de un método incluyendo todas sus llamadas anidadas — Inclusive Time. El árbol Bottom-Up, por el contrario, muestra qué métodos padres llamaron a un método dado — útil para encontrar la fuente de una operación pesada. La diferencia entre Inclusive y Exclusive Time es crítica: un método puede ejecutarse rápidamente pero llamar a un método hijo lento, y esto solo se ve en Inclusive Time.

Búsqueda y filtrado

Traceview admite búsqueda por nombre de método, paquete o clase. Los resultados se resaltan en la línea de tiempo, y el Panel de perfil muestra estadísticas solo para los métodos encontrados. También está disponible el filtrado por hilos — se pueden ocultar los hilos en segundo plano y centrarse en el hilo principal (UI), donde los retrasos son más críticos.

MétricaDescripciónUnidad
Inclusive TimeTiempo total del método + todas sus llamadas hijasμs / ms
Exclusive TimeTiempo solo del método excluyendo llamadas hijasμs / ms
Calls + RecurNúmero de llamadas incluyendo recursiónconteo
CPU TimeTiempo real invertido en la CPU (sin espera)μs / ms
Real TimeTiempo de reloj desde la entrada hasta la salida del métodoμs / ms

Exportación de datos

Traceview permite exportar trazas en formato CSV para su posterior análisis en hojas de cálculo o gráficos. En Android Studio, también se puede copiar un fragmento seleccionado de la línea de tiempo como imagen — para insertar en informes de errores o documentación. Para CI/CD, la exportación en formato Perfetto está disponible a través de la utilidad cmdline-tools.

Cómo usar Traceview en Android Studio

El perfilado a través de Traceview está disponible de dos maneras: a través de Android Profiler con captura en vivo y mediante llamadas programáticas a la API Debug. El primer método es conveniente para análisis ad-hoc, el segundo para pruebas de rendimiento reproducibles.

Captura a través de Android Profiler

En Android Studio, abra la pestaña Profiler (View → Tool Windows → Profiler), seleccione su dispositivo y proceso de aplicación. Haga clic en el segmento de CPU, luego seleccione el modo “Trace Java Methods” y haga clic en Record. Después de interactuar con la aplicación, haga clic en Stop — Traceview abrirá automáticamente la traza grabada. La duración de grabación predeterminada está limitada a 30 segundos, pero el límite se puede cambiar en la configuración del perfilador.

Inicio programático del trazado

Para un perfilado preciso de una sección de código específica, use Debug.startMethodTracing y Debug.stopMethodTracing. El archivo se guarda en el almacenamiento externo de la aplicación en la ruta devuelta por context.getExternalFilesDir(null). Después de completar, transfiera el archivo .trace a su computadora a través de Android Studio Device Explorer, luego ábralo mediante File → Open en Android Studio.

kotlin
Debug.startMethodTracing(
    "heavy_computation",
    Debug.TRACE_COUNT_ALLOCS
)

processLargeDataset()

Debug.stopMethodTracing()

Configuración de parámetros de trazado

Debug.startMethodTracing acepta tres parámetros: el nombre del archivo (sin extensión), el tamaño máximo del búfer (por defecto 8 MB) y banderas. La bandera TRACE_COUNT_ALLOCS añade el conteo de asignaciones de objetos — útil para encontrar fugas de memoria. Traceview no es adecuado para perfilar código nativo — use SimplePerf o Perfetto. Para pruebas largas (más de 30 segundos), se recomienda aumentar el búfer a 64–128 MB mediante el parámetro maxSize.

Lectura de la línea de tiempo de Traceview

La línea de tiempo de Traceview consta de dos paneles: el Panel de línea de tiempo superior con rectángulos de llamadas de colores y el Panel de perfil inferior con una tabla de estadísticas. El Panel de línea de tiempo muestra la ejecución de hilos de izquierda a derecha, donde cada rectángulo es una llamada a un método. Los colores de los rectángulos se codifican por tipo de método: llamadas del sistema Android (verde), métodos de aplicación (azul), llamadas a bibliotecas (naranja).

Cómo leer el Panel de perfil

En el Panel de perfil, cada fila es un método con columnas para Inclusive Time, Exclusive Time, Calls + Recur y CPU Time. Ordene la tabla por Inclusive Time (descendente) para ver primero los métodos que tomaron más tiempo total. Si un método con Inclusive Time alto tiene Exclusive Time bajo — el problema está en sus llamadas hijas, y necesita expandir el árbol. Por ejemplo, ListView.getView puede tener Inclusive Time alto debido a llamadas de carga de imágenes.

Identificación de cuellos de botella

Busque métodos con Real Time anormalmente alto pero CPU Time bajo — esto indica bloqueo (espera de E/S, operación de red, contención de bloqueo). Los métodos con CPU Time alto requieren optimización del algoritmo. Para el hilo de UI, cada método debe completarse dentro de 16 ms — si alguna llamada supera este umbral, la aplicación pierde un fotograma y el usuario ve fluctuaciones. Según las recomendaciones de Google, el tiempo total de todas las llamadas en el hilo de UI por fotograma no debe exceder 8–10 ms, dejando un margen para las operaciones del sistema.

Traceview vs Systrace: comparación de herramientas

Aunque tanto Traceview como Systrace son herramientas de trazado de Android, resuelven diferentes tareas y se utilizan en diferentes etapas del perfilado. La principal diferencia es el nivel de detalle: Traceview opera a nivel de métodos Java/Kotlin, Systrace a nivel de procesos del sistema (CPU, GPU, Binder, SurfaceFlinger).

CriterioTraceviewSystrace
NivelMétodos (Java/Kotlin)Procesos del sistema (CPU/GPU/IO)
InterfazAndroid Studio ProfilerLínea de comandos + informe HTML
DatosInclusive/Exclusive TimeCarga de CPU, tasa de fotogramas
DuraciónHasta 30 seg (Profiler), ilimitado (API)Hasta 60 segundos
Código nativoNo compatibleCompatible mediante marcadores atrace

En la práctica, ambas herramientas se complementan: primero Systrace ayuda a identificar qué componente del sistema está causando el problema (por ejemplo, GC frecuente o bloqueos de Binder), luego Traceview permite profundizar en un método específico dentro de la aplicación. En Android Studio, ambas herramientas están combinadas en Android Profiler — CPU Profiler selecciona automáticamente el modo de grabación óptimo. En dispositivos con Android 12+, Systrace y Traceview funcionan sobre Perfetto, proporcionando un formato de datos unificado para todos los tipos de perfilado.

Ejemplos de código con Traceview

El perfilado efectivo requiere más que simplemente iniciar el trazado — necesita colocar correctamente los puntos de captura e interpretar los resultados. A continuación se presentan dos ejemplos prácticos: perfilado de carga de RecyclerView y comparación de dos algoritmos en una prueba de rendimiento.

Perfilado de carga de RecyclerView

El primer ejemplo es el trazado de la ruta crítica durante el desplazamiento de la lista. RecyclerView llama a onBindViewHolder para cada elemento visible, y si este método toma más de 16 ms, el desplazamiento se vuelve entrecortado. El trazado alrededor de onBindViewHolder mostrará qué operaciones específicas dentro de él están tomando tiempo.

kotlin
class MyAdapter : RecyclerView.Adapter<ViewHolder>() {
    override fun onBindViewHolder(
        holder: ViewHolder,
        position: Int
    ) {
        Debug.startMethodTracing("bind_card_$position")

        holder.bind(items[position])

        Debug.stopMethodTracing()
    }
}

Comparación de dos algoritmos

El segundo ejemplo es una prueba A/B de velocidad de dos implementaciones: carga de imágenes a través de Glide versus BitmapFactory manual. Esta traza permite la comparación objetiva del Inclusive Time de ambas estrategias y la selección de la óptima. Es importante ejecutar cada prueba en un dispositivo calentado (después de 3–5 ciclos) en condiciones idénticas (carga en segundo plano, temperatura).

kotlin
fun compareImageLoadingStrategies() {
    // Prueba A: Glide
    Debug.startMethodTracing("glide_test")
    loadWithGlide()
    Debug.stopMethodTracing()

    // Prueba B: BitmapFactory
    Debug.startMethodTracing("bitmap_test")
    loadWithBitmapFactory()
    Debug.stopMethodTracing()
}

Después de ejecutar, abra ambos archivos .trace en Android Studio y compare el Inclusive Time en el Panel de perfil. Si Glide muestra 3x menos Inclusive Time para la misma tarea — esta es una base objetiva para elegir la biblioteca. Según Tony John (desarrollador de Glide, 2023), la biblioteca utiliza caché y un grupo de hilos, proporcionando hasta un 40% de ganancia en cargas repetidas.

Preguntas frecuentes

¿En qué se diferencia Traceview de Android Profiler?

Traceview es el núcleo de visualización de trazas dentro de Android Profiler. El Profiler proporciona una UI adicional para iniciar y detener la grabación, mientras que Traceview se encarga de mostrar la línea de tiempo y las estadísticas de los métodos. Ambos usan el mismo formato de datos .trace.

¿Se puede usar Traceview en un dispositivo físico?

Sí, Traceview funciona tanto en el emulador como en dispositivos Android físicos. La depuración USB debe estar habilitada y la aplicación debe compilarse en modo debuggable. Los datos en dispositivos físicos son más precisos, ya que el emulador puede distorsionar los tiempos debido a la virtualización.

¿Cuál es el tamaño máximo de un archivo .trace?

El tamaño máximo predeterminado es 8 MB, pero se puede aumentar a 256 MB mediante el parámetro maxSize en Debug.startMethodTracing. Para sesiones largas de perfilado, use Perfetto, que no tiene un límite estricto en el tamaño de la traza.

¿Por qué Traceview no muestra métodos nativos?

Traceview opera a nivel de Android Runtime (ART) y solo ve métodos administrados de Java y Kotlin. Para perfilar código nativo (C/C++ mediante JNI), use SimplePerf o Perfetto con FTrace, que capturan llamadas del sistema a nivel de kernel.

¿Cómo abrir un archivo .trace sin Android Studio?

Use la utilidad dmtracedump del SDK de Android (carpeta platform-tools). Genera un informe HTML con una línea de tiempo y una tabla de estadísticas. En Windows: dmtracedump -h trace.trace > report.html. Una alternativa es la UI de Perfetto (ui.perfetto.dev), que admite la importación del formato .trace.

Resumen

  • Traceview es un perfilador gráfico de métodos Android para análisis de rendimiento en Android Studio
  • La herramienta opera a nivel de ART y registra el Inclusive y Exclusive Time de cada método Java/Kotlin
  • Dos vistas principales: Call Chart para la línea de tiempo y Panel de perfil para estadísticas jerárquicas
  • La captura está disponible a través de Android Profiler (UI) o programáticamente mediante Debug.startMethodTracing
  • Para el hilo de UI, cada método debe completarse en 16 ms, de lo contrario la aplicación pierde fotogramas
  • Traceview no es adecuado para código nativo — use SimplePerf o Perfetto
  • Se recomienda combinar Traceview y Systrace para una imagen completa del rendimiento

Desarrollaremos una aplicación móvil llave en mano

IT Sectr crea aplicaciones para iOS y Android para startups y empresas desde 2017. Le asesoraremos y le propondremos la mejor solución.

Discutir el proyecto

Lea también