Depuración de rendimiento más precisa de DevTools con datos reales

Brendan Kenny
Brendan Kenny

Fecha de publicación: 4 de abril de 2025

Solucionar problemas de rendimiento en el mundo real significa cerrar la brecha entre tu entorno de desarrollo y las diversas experiencias de rendimiento de tus usuarios. En esta publicación, analizaremos las nuevas funciones de las herramientas para programadores de Chrome que te ayudarán a basar más de tus decisiones de depuración de rendimiento en datos reales en lugar de conjeturas.

Cómo calibrar las expectativas

A partir de Chrome 134, DevTools incluye la calibración de limitación de la CPU, una nueva herramienta para eliminar la incertidumbre de elegir el nivel correcto de limitación de la CPU. Ejecuta la calibración una vez y DevTools generará los valores preestablecidos de limitación "dispositivo móvil de gama baja" y "dispositivo móvil de gama media" específicos para tu máquina de desarrollo.

Una discrepancia común en el trabajo de rendimiento web es que, como desarrolladores, a menudo compilamos sitios en dispositivos de escritorio rápidos, mientras que muchos de nuestros usuarios usan dispositivos móviles más modestos. Hacer un seguimiento de un problema de rendimiento puede ser complicado cuando solo ocurre en un dispositivo con una CPU mucho más lenta.

El estándar de oro es la depuración remota en un dispositivo móvil real, pero durante casi una década, Chrome también admite la limitación de la CPU para ciclos de iteración rápidos y ligeros durante el desarrollo.

Pero ¿qué nivel de limitación de la CPU deberías elegir? 4 veces? 20 veces? ¿Cómo sabes cuál se ajusta mejor al tipo de dispositivos que sabes que visitan tu sitio? ¿Cómo cambia esa decisión la velocidad de tu propia máquina, ya sea que estés en una estación de trabajo de alta gama o uses una Chromebook de 8 años en cualquier lugar?

El proceso de calibración del regulador

Cuando se abre el panel Rendimiento, la configuración del entorno tiene un menú desplegable para establecer el nivel de limitación de la CPU. Si no ejecutaste la calibración antes, verás dos opciones inhabilitadas en "Parámetros de configuración calibrados" en el menú desplegable y una opción Calibrar… en la parte inferior.

Si lo haces, se te dirigirá a los parámetros de configuración preestablecidos de limitación de la CPU en Configuración (también puedes ir allí directamente).

  1. Haz clic en el botón Calibrar.
  2. Haz clic en Continuar cuando se te advierta que se abandonará brevemente la página actual.
  3. Se ejecutará una comparativa rápida para medir la velocidad de la máquina actual y se completará la calibración.
Grabación de pantalla de la ejecución del proceso de limitación de la CPU

Las opciones de limitación ahora se propagarán con los parámetros de configuración preestablecidos calibrados para dispositivos de nivel bajo y medio.

Estos dos parámetros preestablecidos deberían ser suficientes para la mayoría de los casos de uso de desarrollo y, por lo general, recomendamos el parámetro preestablecido de "nivel medio", ya que coincide con un dispositivo móvil "típico" que se ve en la Web. Si sabes que muchos de tus usuarios tienen dispositivos aún más lentos o que un problema de rendimiento solo suele ocurrir en esos casos, la opción "nivel bajo" debería ser lo suficientemente lenta como para capturar incluso la cola larga de dispositivos de gama baja.

Por último, si crees que se produjo un error con la calibración o que tu máquina local cambió de alguna manera, puedes volver a calibrar el dispositivo a través del menú desplegable de limitación o en la configuración, lo que volverá a ejecutar la comparativa y actualizará los parámetros predeterminados.

Cómo funciona la limitación de la CPU en DevTools

Si alguna vez te preguntaste cómo funciona la limitación de la CPU en DevTools, la idea es relativamente sencilla. Cuando activas la limitación para una pestaña, Chrome inicia un subproceso de limitación independiente que interrumpe y suspende el subproceso principal de la pestaña para generar ráfagas cortas frecuentes. El objetivo es suspender el subproceso principal durante el tiempo suficiente en total para que la duración de cualquier tarea determinada aumente en función del factor de limitación.

Por ejemplo, con una limitación de CPU de 4 veces, el subproceso principal terminará suspendido aproximadamente el 75% del tiempo, lo que hace que cualquier trabajo del subproceso principal tarde cuatro veces más en completarse.

El beneficio de este enfoque es que es bastante transparente para el resto de Chrome. No se necesita código especializado para ralentizar JavaScript, el diseño ni cada uno de los otros tipos de trabajo que debe realizar un navegador. Todo el trabajo en el subproceso principal lleva más tiempo porque el subproceso solo se puede ejecutar durante una fracción del tiempo.

Cuando la limitación de la CPU actúa como un dispositivo móvil real

Como resultado, la limitación de la CPU simula bien muchos tipos de trabajo de CPU para dispositivos móviles. Por ejemplo, si una interacción activa JavaScript y el diseño, es muy probable que se ejecute de forma muy similar a como lo haría en un dispositivo móvil.

Considera una tarea activada por el clic en un botón, que ejecuta JavaScript para agregar elementos nuevos al DOM, lo que requiere que el navegador ejecute cálculos de diseño y estilo para posicionar el contenido nuevo:

El perfil de una interacción de clic en una computadora de escritorio, que se muestra en el panel Rendimiento, tarda 67 milisegundos.
Un controlador de interacción de clics en una computadora de escritorio que tarda 67 milisegundos.

Con el parámetro de configuración preestablecido de limitación de CPU "dispositivo móvil de nivel medio" calibrado (3.7x en esta máquina de desarrollo), la interacción se ve muy similar, pero la duración aumenta significativamente y se convierte en una tarea larga:

El perfil de la interacción de clic en una máquina de escritorio con la limitación de la CPU habilitada, que se muestra en el panel Rendimiento, tarda 211 milisegundos.
La misma interacción en una máquina de escritorio con limitación de CPU para dispositivos móviles de nivel medio tarda 211 milisegundos.

Probar la misma interacción en un dispositivo de nivel medio real con la depuración remota produce un resultado muy similar, tanto en la forma como en la duración del seguimiento de la interacción. Debido a que esta tarea está principalmente vinculada a la CPU en el subproceso principal (ejecuta el código JavaScript de la página y el código de diseño y estilo de Chrome), la limitación calibrada recrea con precisión el rendimiento real de los dispositivos móviles:

El perfil de la interacción de clic en un teléfono real, que se muestra en el panel Rendimiento, tarda 189 milisegundos.
La misma interacción en un dispositivo móvil real, que tarda 189 milisegundos.

Cuándo te recomendamos que realices pruebas en un dispositivo móvil real

Si bien es muy útil, el control de la CPU no puede simular todos los aspectos del hardware para dispositivos móviles. En un teléfono, la velocidad del disco es más lenta, el ancho de banda de la memoria es más limitado y la limitación térmica puede activarse en cualquier momento para reducir la velocidad de ejecución.

Una limitación común de regulación implica un trabajo intensivo de la GPU. Las GPUs para dispositivos móviles y computadoras de escritorio difieren en la arquitectura, y Chrome ejecuta las operaciones de la GPU en un proceso independiente del subproceso principal de la página. Como resultado, la limitación de la CPU de DevTools no afecta el proceso de la GPU (lo cual es lo mejor, ya que eso afectaría la capacidad de respuesta de DevTools y del resto del navegador).

La pintura complicada, la composición y el estilo con muchos efectos son problemas de rendimiento comunes que pueden parecer bien en una máquina de desarrollo, pero que son muy lentos en dispositivos móviles. Además, puede ser difícil darse cuenta de que hay un problema cuando intentas volver a crearlo en tu máquina de desarrollo.

Considera la misma interacción que antes (hacer clic y agregar muchos elementos al DOM), solo que esta vez los elementos nuevos tienen un diseño con una cantidad excesiva de sombras de cuadro y filtros de desenfoque pesados para la GPU.

La forma inicial y la duración de la interacción se ven similares, pero hay una nueva pintura de subproceso principal al final para los efectos agregados:

El perfil de una interacción de clic en una computadora de escritorio con la limitación de la CPU habilitada, que se muestra en el panel Rendimiento, tarda 270 milisegundos. El último tercio de la tarea está ocupado por una entrada de Paint.
Una interacción de clic con efectos de GPU pesados en una máquina de escritorio con limitación de CPU para dispositivos móviles de nivel medio, que tarda 270 milisegundos.

En un teléfono de gama media real, la parte del subproceso principal de la interacción se ve muy similar a la simulada, incluida la pintura adicional, pero luego un proceso de GPU descontrolado parece realizar una gran cantidad de trabajo antes de que el resultado de la interacción pueda aparecer en la pantalla:

El perfil de la interacción de clic en un teléfono real, que se muestra en el panel Rendimiento, tarda 620 milisegundos. Se muestra una entrada de Paint muy similar como el seguimiento limitado, pero esta interacción está dominada por una entrada de GPU que ocupa la última mitad de la interacción.
La misma interacción en un dispositivo móvil real tarda 620 milisegundos.

El trabajo de la GPU alarga la interacción en otros 300 milisegundos y es un trabajo que apenas existe para la GPU de la laptop, incluso con el estrangulamiento de la CPU (subproceso principal) habilitado.

También hay otros casos que tienen inconvenientes significativos de emulación, como las cargas de páginas de dependencia profunda, en las que hay una interacción entre la limitación de red simulada, las comunicaciones entre procesos y el acceso a las cachés de disco y memoria.

Asegúrate de probar en dispositivos móviles reales en algún momento. Además, si no puedes volver a crear un problema en el lab en tu computadora de escritorio que tus datos de campo muestran que afecta a los usuarios de dispositivos móviles, prueba la depuración remota con un dispositivo real para ver si hay una diferencia que no estás notando.

Más mejoras de depuración basadas en datos

Recientemente, se lanzaron otras funciones nuevas para facilitar la base de la configuración y las decisiones de depuración en tus usuarios reales.

Si tienes habilitados los datos de campo, el panel Rendimiento te dará sugerencias sobre la limitación en función de los usuarios del percentil 75, según lo mida el Informe sobre la experiencia del usuario en Chrome (CrUX), y la vista de métricas en tiempo real te alertará si tus métricas medidas de forma local divergen de los datos de campo. Esto se analizó en detalle en una entrada anterior sobre cómo incorporar datos de Métricas web esenciales del mundo real en DevTools.

Una novedad es que las estadísticas del panel de rendimiento en la barra lateral ahora también te alertarán si las métricas medidas en un registro no coinciden con lo que experimentan tus usuarios en el mundo real.

Entrada de estadísticas en la barra lateral del panel Rendimiento. La línea superior muestra las métricas medidas de forma local, que se consideran buenas, y la siguiente línea muestra las métricas del campo, dos de las cuales se consideran "necesitan mejoras". Debajo de este texto, hay un vínculo a información sobre por qué las métricas locales y de campo podrían no coincidir y cómo ajustar la configuración de limitación y la emulación de dispositivos.
La barra lateral de estadísticas advierte que puede ser útil ajustar la configuración de limitación y emulación para que coincida con los usuarios reales.

Si habilitas los datos de campo, también podrás usar las Métricas web esenciales del percentil 75 para ayudar a clasificar el orden en que se muestran las estadísticas en la barra lateral. Si, por ejemplo, tus usuarios suelen tener un procesamiento de imagen con contenido más grande (LCP) excelente, pero una Interaction to Next Paint (INP) deficiente, las estadísticas que ayudan a mejorar la INP suelen aparecer en la parte superior de la lista.

Por último, si alguna vez cambiaste entre varios seguimientos o cargas de seguimiento desde el disco, puede ser difícil recordar exactamente qué parámetros de configuración de emulación y limitación para dispositivos móviles usaste en cada seguimiento. El menú desplegable de selección de seguimiento en la parte superior del panel Rendimiento ahora muestra información de emulación para cada seguimiento.

El menú desplegable de selección de seguimiento, con la configuración de emulación y limitación de cada seguimiento.

Detente, calibra y escucha

En última instancia, debemos basar nuestras decisiones de depuración en el mundo real: comenzar con los datos de campo de las estadísticas y los informes de los usuarios para encontrar problemas y, luego, recrear esas experiencias del usuario en el lab para el diagnóstico. Estas nuevas incorporaciones de DevTools deberían ayudar a facilitar ese proceso.

La calibración y las alertas de limitación de la CPU en experiencias divergentes de campo y de laboratorio ayudan a reducir la incertidumbre sobre si estás o no en el camino correcto y permiten una aproximación más coherente del rendimiento en el mundo real. DevTools elimina las conjeturas de la configuración y destaca las posibles discrepancias para ayudarte a dedicar más tiempo a solucionar los problemas de rendimiento reales que afectan a tus usuarios.

¿Tienes ideas para más mejoras o sugerencias para nuevas funciones? Cuéntanos.