Usar la vista del CPU profiler
Aprende cómo usar la vista del CPU profiler de DevTools.
La vista del CPU profiler te permite grabar y perfilar una sesión de tu aplicación Dart o Flutter. El profiler puede ayudarte a resolver problemas de rendimiento o a comprender en general la actividad de la CPU de tu app. La VM de Dart recopila muestras de CPU (una instantánea de la pila de llamadas de la CPU en un único punto en el tiempo) y envía los datos a DevTools para su visualización. Al agregar muchas muestras de CPU juntas, el profiler puede ayudarte a entender dónde pasa la CPU la mayor parte de su tiempo.
CPU profiler
#Comienza a grabar un perfil de CPU haciendo clic en Record. Cuando hayas terminado de grabar, haz clic en Stop. En este punto, los datos de perfilado de CPU se extraen de la VM y se muestran en las vistas del profiler (Call tree, Bottom up, Method table, y Flame chart).
Para cargar todas las muestras de CPU disponibles sin tener que grabar y detener manualmente, puedes hacer clic en Load all CPU samples, lo que extrae todas las muestras de CPU que la VM ha grabado y almacenado en su búfer de muestras y luego muestra esas muestras de CPU en la vista del profiler.
Por defecto, el búfer de muestras de la VM se usa como un búfer circular,
lo que significa que una vez que se llena, las nuevas muestras comienzan
a sobrescribir las más antiguas del búfer.
Para hacer que la VM en su lugar descarte todas las muestras recopiladas después de que
el búfer de muestras se haya llenado,
pasa el flag --profile-startup a dart run o flutter run.
De abajo hacia arriba
#Esta tabla proporciona una representación bottom-up de un perfil de CPU. Esto significa que cada método de nivel superior, o raíz, en la tabla bottom-up es en realidad el método superior en la pila de llamadas para una o más muestras de CPU. En otras palabras, cada método de nivel superior en una tabla bottom-up es un nodo hoja de la tabla top-down (el call tree). En esta tabla, se puede desplegar un método para mostrar sus callers.
Esta vista es útil para identificar métodos costosos en un perfil de CPU. Cuando un nodo raíz en esta tabla tiene un tiempo de self alto, eso significa que muchas muestras de CPU en este perfil terminaron con ese método en la cima de la pila de llamadas.
Consulta la sección Guías a continuación para aprender cómo
habilitar las líneas verticales azules y verdes que se ven en esta imagen.
Las descripciones emergentes pueden ayudarte a entender los valores en cada columna:
- Total time
Para métodos de nivel superior en el árbol bottom-up
(frames de pila que estaban en la cima de al menos una muestra de CPU), este es el tiempo que el método pasó ejecutando su propio código, así como el código de cualquier método que llamó.
- Self time
Para métodos de nivel superior en el árbol bottom-up
(frames de pila que estaban en la cima de al menos una muestra de CPU),
este es el tiempo que el método pasó ejecutando solo
su propio código.
Para los métodos hijos en el árbol bottom-up (los callers),
este es el tiempo self del método de nivel superior (el callee)
cuando se llama a través del método hijo (el caller).
Elemento de tabla (tiempo self)

Call tree
#Esta tabla proporciona una representación top-down de un perfil de CPU. Esto significa que cada método de nivel superior en el call tree es una raíz de una o más muestras de CPU. En esta tabla, se puede desplegar un método para mostrar sus callees.
Esta vista es útil para identificar rutas costosas en un perfil de CPU. Cuando un nodo raíz en esta tabla tiene un tiempo total alto, eso significa que muchas muestras de CPU en este perfil comenzaron con ese método en la parte inferior de la pila de llamadas.
Consulta la sección Guías a continuación para aprender cómo
habilitar las líneas verticales azules y verdes que se ven en esta imagen.
Las descripciones emergentes pueden ayudarte a entender los valores en cada columna:
- Total time
Tiempo que un método pasó ejecutando su propio código así como
el código de cualquier método que llamó.
- Self time
Tiempo que el método pasó ejecutando solo su propio código.
Method table
#La tabla de métodos proporciona estadísticas de CPU para cada método contenido en un perfil de CPU. En la tabla de la izquierda, todos los métodos disponibles se enumeran con su tiempo total y self.
El tiempo Total es el tiempo combinado que un método pasó en cualquier lugar de la pila de llamadas, o en otras palabras, el tiempo que un método pasó ejecutando su propio código y cualquier código de métodos que llamó.
El tiempo Self es el tiempo combinado que un método pasó en la cima de la pila de llamadas, o en otras palabras, el tiempo que un método pasó ejecutando solo su propio código.
Al seleccionar un método de la tabla de la izquierda se muestra el gráfico de llamadas para ese método. El gráfico de llamadas muestra los callers y callees de un método y sus respectivos porcentajes de caller / callee.
Flame chart
#La vista de flame chart es una representación gráfica de Call tree. Esta es una vista top-down de un perfil de CPU, por lo que en este gráfico, el método más superior llama al que está debajo de él. El ancho de cada elemento de flame chart representa la cantidad de tiempo que un método pasó en la pila de llamadas.
Al igual que el Call tree, esta vista es útil para identificar rutas costosas en un perfil de CPU.
El menú de ayuda, que se puede abrir haciendo clic en el icono ?
junto a la barra de búsqueda, proporciona información sobre cómo
navegar y hacer zoom dentro del gráfico y una leyenda codificada por colores.

Tasa de muestreo de CPU
#DevTools establece una tasa a la cual la VM recopila muestras de CPU: 1 muestra / 250 μs (microsegundos). Esto está seleccionado por defecto en la página del CPU profiler como "Cpu sampling rate: medium". Esta tasa se puede modificar usando el selector en la parte superior de la página.
Las tasas de muestreo low, medium y high son 1,000 Hz, 4,000 Hz y 20,000 Hz, respectivamente. Es importante conocer las ventajas y desventajas de modificar esta configuración.
Un perfil que se grabó con una tasa de muestreo más alta produce un perfil de CPU más detallado con más muestras. Esto podría afectar el rendimiento de tu app ya que la VM está siendo interrumpida con más frecuencia para recopilar muestras. Esto también causa que el búfer de muestras de CPU de la VM se desborde más rápidamente. La VM tiene espacio limitado donde puede almacenar información de muestras de CPU. A una tasa de muestreo más alta, el espacio se llena y comienza a desbordarse antes de lo que lo haría si se usara una tasa de muestreo más baja. Esto significa que podrías no tener acceso a las muestras de CPU desde el comienzo del perfil grabado, dependiendo de si el búfer se desborda durante el tiempo de grabación.
Un perfil que se grabó con una tasa de muestreo más baja produce un perfil de CPU menos detallado con menos muestras. Esto afecta menos el rendimiento de tu app, pero podrías tener acceso a menos información sobre lo que la CPU estaba haciendo durante el tiempo del perfil. El búfer de muestras de la VM también se llena más lentamente, por lo que puedes ver muestras de CPU durante un período más largo de tiempo de ejecución de la app. Esto significa que tienes una mejor oportunidad de ver muestras de CPU desde el comienzo del perfil grabado.
Filtrado
#Al ver un perfil de CPU, puedes filtrar los datos por
librería, nombre de método o UserTag.
Guías
#Al mirar un árbol de llamadas o una vista de abajo hacia arriba, a veces los árboles pueden ser muy profundos. Para ayudar a ver las relaciones padre-hijo en un árbol profundo, activa la opción Display guidelines. Esto agrega guías verticales entre el padre y el hijo en el árbol.
Otros recursos
#Para aprender cómo usar DevTools para analizar el uso de CPU de una app de Mandelbrot de uso intensivo de cómputo, consulta un tutorial guiado sobre la vista del CPU profiler. Además, aprende cómo analizar el uso de CPU cuando la app usa isolates para computación paralela.
A menos que se indique lo contrario, la documentación de este sitio refleja Flutter 3.44.0. Página actualizada por última vez el 2026-05-11. Ver código fuente oreportar un problema.