Visualización de Cuellos de Botella de Rendimiento Front-End

Rate this content
Bookmark

Hay muchas formas de medir el rendimiento web, pero lo más importante es medir lo que realmente importa a los usuarios. Esta charla trata sobre cómo medir, analizar y solucionar el código JavaScript lento utilizando las API del navegador.

This talk has been presented at React Summit 2020, check out the latest edition of this React Conference.

FAQ

Dazzone es un servicio de transmisión de deportes en vivo y a pedido que está presente en nueve mercados alrededor del mundo, ofreciendo acceso a millones de clientes para ver los deportes que desean.

El equipo trabaja con tres categorías de dispositivos de sala de estar: televisores inteligentes (como Samsung, Toshiba y Panasonic), consolas de juegos (como PS4, PS5 y Xbox), y decodificadores (como Comcast, Fire TV y Sky Q).

Medir el rendimiento proporciona una línea de base necesaria para analizar realmente el problema y proponer soluciones efectivas, siguiendo un ciclo repetitivo de medición, análisis y solución hasta obtener resultados satisfactorios.

Se demostró la técnica de virtualización, que es efectiva para manejar grandes listas de contenido reduciendo significativamente tiempos de ejecución y mejorando la experiencia de usuario al mantener interacciones más fluidas.

La API de tiempos de usuario permite crear marcas de tiempo de alta resolución y calcular la duración entre eventos, facilitando la visualización y análisis del rendimiento en las herramientas para desarrolladores.

La virtualización, también conocida como enmarcado, es una técnica que permite renderizar gran cantidad de contenido de manera eficiente. Consiste en mantener sólo una parte visible de los elementos en pantalla, reduciendo la carga y mejorando el rendimiento.

Richie McColl
Richie McColl
34 min
17 Jun, 2021

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Las herramientas basadas en web de React permiten el aprendizaje independiente. Dazzone, un servicio de transmisión de deportes, se enfrenta a desafíos con objetivos de memoria y CPU bajos. Medir, analizar y solucionar problemas de rendimiento es crucial. La virtualización mejora la eficiencia y el rendimiento de la representación. La aplicación ahora es mucho más rápida con significativamente menos jank.

1. Introducción a React y rendimiento web

Short description:

Las herramientas basadas en web de React te permiten diseñar y aprender por tu cuenta. Hay muchos recursos disponibles en el sitio web de Flutter para aprender más sobre React. Rich, un ingeniero de front-end en Dazzone, hablará sobre el rendimiento web. Dazzone es un servicio de transmisión de deportes en vivo y a pedido disponible en nueve mercados en todo el mundo. Proporcionan acceso a deportes a través de televisores inteligentes, consolas de juegos y decodificadores. El equipo enfrenta desafíos con objetivos de memoria y CPU bajos, competencia de recursos y mantener interacciones fluidas. Los sitios web rápidos conducen a una mejor experiencia de usuario, como lo demuestran los datos del documento técnico Getting Faster de Cloudflare.

¿Cómo estás aprendiendo React por tu cuenta? Las herramientas basadas en web de React te permiten diseñar y aprender por tu cuenta. Estas herramientas solo están disponibles para usuarios que trabajan en su propio proyecto. Si estás buscando una forma de aprender más sobre los lenguajes y enseñanzas de React, hay muchos recursos disponibles en el sitio web de Flutter.

Ahora le cederé la palabra a Rich para que te muestre cómo hacerlo por tu cuenta.

Hola. Antes de comenzar, me gustaría agradecer a los organizadores y a los demás oradores de React Summit. Hasta ahora ha sido una conferencia realmente genial y todos están haciendo un gran trabajo. Hoy hablaré sobre el rendimiento web. Mi nombre es Rich. En GitHub y Twitter me conocen como Richie McColt. Soy un ingeniero de front-end y trabajo en una empresa llamada Dazzone en Londres. Soy originario de Glasgow, Escocia. Probablemente puedas notarlo por el acento. Antes de comenzar a hablar sobre el rendimiento web, daré una breve introducción sobre lo que hacemos en Dazzone. Dazzone es un servicio de transmisión de deportes en vivo y a pedido. Estamos presentes en nueve mercados de todo el mundo y brindamos acceso a millones de clientes para que puedan ver los deportes que desean. El equipo en el que trabajo es responsable de los dispositivos de sala de estar. Los dispositivos de sala de estar se dividen en tres categorías: televisores inteligentes, como Samsung, Toshiba y Panasonic; consolas de juegos, como PS4, PS5 y Xbox; y decodificadores, como Comcast, Fire TV y Sky Q. Para poner el rendimiento en contexto con lo que hacemos en Dazzone, los problemas con los que nos enfrentamos están relacionados con objetivos de memoria y CPU bajos, competencia de recursos en el hilo principal. Por ejemplo, si hay una reproducción en segundo plano y el usuario intenta navegar por el contenido al mismo tiempo, debemos mantener interacciones fluidas a 60 fps cuando los clientes navegan por el contenido. Los datos no mienten, ¿verdad? Los sitios web rápidos equivalen a una mejor experiencia de usuario. Esto es lo que prefieren los clientes y es algo a lo que debemos aspirar. Este documento técnico de Cloudflare Getting Faster demuestra algunas citas útiles. Las conversiones disminuyen un 7% debido a solo un segundo adicional de tiempo de carga. Y el 39% de los usuarios dejan de interactuar con un sitio web si las imágenes tardan demasiado en cargarse.

2. Understanding Performance Measurement and Analysis

Short description:

El software rápido marca la diferencia entre una integración fluida en tu vida y la renuencia. Hoy cubriremos la medición, análisis y solución de problemas de rendimiento. Hablaremos sobre el tiempo del usuario, ZPI y tendremos una demostración en vivo. El ciclo de medición-análisis-solución implica medir, analizar, proponer soluciones y repetir hasta estar satisfechos. Tenemos una aplicación de demostración que utiliza la API de SpaceX para renderizar lanzamientos. Para perfilar, utilizaremos el panel de rendimiento de Chrome y nos centraremos en el hilo principal.

Y otra gran cita del ensayo de Craig Maud sobre software rápido es que, para mí, el software rápido marca la diferencia entre una aplicación integrada sin problemas en tu vida y una a la que se llama con gran renuencia. Y como usuarios de software, definitivamente podemos relacionarnos con esto en algún momento u otro.

Entonces, hoy, lo que cubriremos es comprender el método de medición, análisis y solución. Toquemos brevemente el tiempo del usuario y ZPI que proporciona el navegador. Tendremos una demostración en vivo de medición y análisis de una ejecución lenta en código JavaScript. Presentaré la técnica de renderizado de virtualización. Hablaré brevemente sobre los problemas de rendimiento a los que nos enfrentamos en Dazzone. Y finalmente, solucionaré el cuello de botella de rendimiento que tenemos en la demostración.

El ciclo de medición, análisis y solución es una metodología que suelo utilizar al realizar auditorías de rendimiento. Antes de poder analizar y solucionar un problema, primero debemos medir. La medición nos dará la línea de base que necesitamos para analizar el problema realmente. Una vez que analizamos el problema, podemos proponer una solución. Una vez que solucionamos, volvemos a medir. Y este ciclo se repite hasta que obtenemos un nuevo número con el que estamos satisfechos al medir.

Tengo una demostración, una pequeña aplicación de frontend. Está disponible en esta URL de GitHub. Las instrucciones de configuración están en el archivo Léame. Así que si quieres seguir, siéntete libre de hacerlo. Cambiaré a la demostración que tengo en ejecución. Esta aplicación es solo una pequeña aplicación de frontend que utiliza la API de SpaceX para mostrar una lista de lanzamientos de más nuevos a más antiguos. Una interacción que perfilaré es cambiar el orden de los lanzamientos. Entonces, si hago clic en este botón, ahora estoy viendo los lanzamientos más antiguos de SpaceX.

Para perfilar esto, lo que haremos es ir a las Herramientas de desarrollo en Chrome y utilizaremos el panel de Rendimiento. Luego, iremos a la opción de CPU aquí y haremos clic en ralentizar seis veces. Luego, iremos aquí y presionaremos grabar. Y lo que haremos es interactuar con esta función varias veces para obtener algunos datos y detener la grabación. Bien, genial. Lo que podemos ver aquí es que hay bastante actividad. Lo que realmente nos preocupa es esta sección aquí. Esta sección es el hilo principal.

QnA

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Una Guía del Comportamiento de Renderizado de React
React Advanced 2022React Advanced 2022
25 min
Una Guía del Comportamiento de Renderizado de React
Top Content
This transcription provides a brief guide to React rendering behavior. It explains the process of rendering, comparing new and old elements, and the importance of pure rendering without side effects. It also covers topics such as batching and double rendering, optimizing rendering and using context and Redux in React. Overall, it offers valuable insights for developers looking to understand and optimize React rendering.
Depuración Web Moderna
JSNation 2023JSNation 2023
29 min
Depuración Web Moderna
Top Content
This Talk discusses modern web debugging and the latest updates in Chrome DevTools. It highlights new features that help pinpoint issues quicker, improved file visibility and source mapping, and ignoring and configuring files. The Breakpoints panel in DevTools has been redesigned for easier access and management. The Talk also covers the challenges of debugging with source maps and the efforts to standardize the source map format. Lastly, it provides tips for improving productivity with DevTools and emphasizes the importance of reporting bugs and using source maps for debugging production code.
Acelerando tu aplicación React con menos JavaScript
React Summit 2023React Summit 2023
32 min
Acelerando tu aplicación React con menos JavaScript
Top Content
Mishko, the creator of Angular and AngularJS, discusses the challenges of website performance and JavaScript hydration. He explains the differences between client-side and server-side rendering and introduces Quik as a solution for efficient component hydration. Mishko demonstrates examples of state management and intercommunication using Quik. He highlights the performance benefits of using Quik with React and emphasizes the importance of reducing JavaScript size for better performance. Finally, he mentions the use of QUIC in both MPA and SPA applications for improved startup performance.
Concurrencia en React, Explicada
React Summit 2023React Summit 2023
23 min
Concurrencia en React, Explicada
Top Content
React 18's concurrent rendering, specifically the useTransition hook, optimizes app performance by allowing non-urgent updates to be processed without freezing the UI. However, there are drawbacks such as longer processing time for non-urgent updates and increased CPU usage. The useTransition hook works similarly to throttling or bouncing, making it useful for addressing performance issues caused by multiple small components. Libraries like React Query may require the use of alternative APIs to handle urgent and non-urgent updates effectively.
El Futuro de las Herramientas de Rendimiento
JSNation 2022JSNation 2022
21 min
El Futuro de las Herramientas de Rendimiento
Top Content
Today's Talk discusses the future of performance tooling, focusing on user-centric, actionable, and contextual approaches. The introduction highlights Adi Osmani's expertise in performance tools and his passion for DevTools features. The Talk explores the integration of user flows into DevTools and Lighthouse, enabling performance measurement and optimization. It also showcases the import/export feature for user flows and the collaboration potential with Lighthouse. The Talk further delves into the use of flows with other tools like web page test and Cypress, offering cross-browser testing capabilities. The actionable aspect emphasizes the importance of metrics like Interaction to Next Paint and Total Blocking Time, as well as the improvements in Lighthouse and performance debugging tools. Lastly, the Talk emphasizes the iterative nature of performance improvement and the user-centric, actionable, and contextual future of performance tooling.
Optimización de juegos HTML5: 10 años de aprendizaje
JS GameDev Summit 2022JS GameDev Summit 2022
33 min
Optimización de juegos HTML5: 10 años de aprendizaje
Top Content
PlayCanvas is an open-source game engine used by game developers worldwide. Optimization is crucial for HTML5 games, focusing on load times and frame rate. Texture and mesh optimization can significantly reduce download sizes. GLTF and GLB formats offer smaller file sizes and faster parsing times. Compressing game resources and using efficient file formats can improve load times. Framerate optimization and resolution scaling are important for better performance. Managing draw calls and using batching techniques can optimize performance. Browser DevTools, such as Chrome and Firefox, are useful for debugging and profiling. Detecting device performance and optimizing based on specific devices can improve game performance. Apple is making progress with WebGPU implementation. HTML5 games can be shipped to the App Store using Cordova.

Workshops on related topic

Masterclass de Depuración de Rendimiento de React
React Summit 2023React Summit 2023
170 min
Masterclass de Depuración de Rendimiento de React
Top Content
Featured WorkshopFree
Ivan Akulov
Ivan Akulov
Los primeros intentos de Ivan en la depuración de rendimiento fueron caóticos. Vería una interacción lenta, intentaría una optimización aleatoria, vería que no ayudaba, y seguiría intentando otras optimizaciones hasta que encontraba la correcta (o se rendía).
En aquel entonces, Ivan no sabía cómo usar bien las herramientas de rendimiento. Haría una grabación en Chrome DevTools o React Profiler, la examinaría, intentaría hacer clic en cosas aleatorias, y luego la cerraría frustrado unos minutos después. Ahora, Ivan sabe exactamente dónde y qué buscar. Y en esta masterclass, Ivan te enseñará eso también.
Así es como va a funcionar. Tomaremos una aplicación lenta → la depuraremos (usando herramientas como Chrome DevTools, React Profiler, y why-did-you-render) → identificaremos el cuello de botella → y luego repetiremos, varias veces más. No hablaremos de las soluciones (en el 90% de los casos, es simplemente el viejo y regular useMemo() o memo()). Pero hablaremos de todo lo que viene antes - y aprenderemos a analizar cualquier problema de rendimiento de React, paso a paso.
(Nota: Esta masterclass es más adecuada para ingenieros que ya están familiarizados con cómo funcionan useMemo() y memo() - pero quieren mejorar en el uso de las herramientas de rendimiento alrededor de React. Además, estaremos cubriendo el rendimiento de la interacción, no la velocidad de carga, por lo que no escucharás una palabra sobre Lighthouse 🤐)
React, TypeScript y TDD
React Advanced 2021React Advanced 2021
174 min
React, TypeScript y TDD
Top Content
Featured WorkshopFree
Paul Everitt
Paul Everitt
ReactJS es extremadamente popular y, por lo tanto, ampliamente soportado. TypeScript está ganando popularidad y, por lo tanto, cada vez más soportado.

¿Los dos juntos? No tanto. Dado que ambos cambian rápidamente, es difícil encontrar materiales de aprendizaje precisos.

¿React+TypeScript, con los IDEs de JetBrains? Esa combinación de tres partes es el tema de esta serie. Mostraremos un poco sobre mucho. Es decir, los pasos clave para ser productivo, en el IDE, para proyectos de React utilizando TypeScript. En el camino, mostraremos el desarrollo guiado por pruebas y enfatizaremos consejos y trucos en el IDE.
Dominando conceptos avanzados en TypeScript
React Summit US 2023React Summit US 2023
132 min
Dominando conceptos avanzados en TypeScript
Top Content
Featured WorkshopFree
Jiri Lojda
Jiri Lojda
TypeScript no es solo tipos e interfaces. Únete a esta masterclass para dominar características más avanzadas de TypeScript que harán tu código a prueba de balas. Cubriremos tipos condicionales y notación de inferencia, cadenas de plantillas y cómo mapear sobre tipos de unión y propiedades de objetos/arrays. Cada tema se demostrará en una aplicación de muestra que se escribió con tipos básicos o sin tipos en absoluto y juntos mejoraremos el código para que te familiarices más con cada característica y puedas llevar este nuevo conocimiento directamente a tus proyectos.
Aprenderás:- - ¿Qué son los tipos condicionales y la notación de inferencia?- ¿Qué son las cadenas de plantillas?- Cómo mapear sobre tipos de unión y propiedades de objetos/arrays.
Construyendo aplicaciones web que iluminan Internet con QwikCity
JSNation 2023JSNation 2023
170 min
Construyendo aplicaciones web que iluminan Internet con QwikCity
Featured WorkshopFree
Miško Hevery
Miško Hevery
Construir aplicaciones web instantáneas a gran escala ha sido elusivo. Los sitios del mundo real necesitan seguimiento, análisis y interfaces y interacciones de usuario complejas. Siempre comenzamos con las mejores intenciones pero terminamos con un sitio menos que ideal.
QwikCity es un nuevo meta-framework que te permite construir aplicaciones a gran escala con un rendimiento de inicio constante. Veremos cómo construir una aplicación QwikCity y qué la hace única. El masterclass te mostrará cómo configurar un proyecto QwikCity. Cómo funciona el enrutamiento con el diseño. La aplicación de demostración obtendrá datos y los presentará al usuario en un formulario editable. Y finalmente, cómo se puede utilizar la autenticación. Todas las partes básicas para cualquier aplicación a gran escala.
En el camino, también veremos qué hace que Qwik sea único y cómo la capacidad de reanudación permite un rendimiento de inicio constante sin importar la complejidad de la aplicación.
Masterclass: Integrando LangChain con JavaScript para Desarrolladores Web
React Summit 2024React Summit 2024
92 min
Masterclass: Integrando LangChain con JavaScript para Desarrolladores Web
Featured Workshop
Vivek Nayyar
Vivek Nayyar
Sumérgete en el mundo de la IA con nuestro masterclass interactivo diseñado específicamente para desarrolladores web. "Masterclass: Integrando LangChain con JavaScript para Desarrolladores Web" ofrece una oportunidad única para cerrar la brecha entre la IA y el desarrollo web. A pesar de la prominencia de Python en el desarrollo de IA, el vasto potencial de JavaScript sigue siendo en gran medida inexplorado. Este masterclass tiene como objetivo cambiar eso.A lo largo de esta sesión práctica, los participantes aprenderán cómo aprovechar LangChain, una herramienta diseñada para hacer que los modelos de lenguaje grandes sean más accesibles y útiles, para construir agentes de IA dinámicos directamente dentro de entornos JavaScript. Este enfoque abre nuevas posibilidades para mejorar las aplicaciones web con funciones inteligentes, desde el soporte al cliente automatizado hasta la generación de contenido y más.Comenzaremos con los conceptos básicos de LangChain y los modelos de IA, asegurando una base sólida incluso para aquellos nuevos en IA. A partir de ahí, nos sumergiremos en ejercicios prácticos que demuestran cómo integrar estas tecnologías en proyectos reales de JavaScript. Los participantes trabajarán en ejemplos, enfrentando y superando los desafíos de hacer que la IA funcione sin problemas en la web.Este masterclass es más que una experiencia de aprendizaje; es una oportunidad de estar a la vanguardia de un campo emergente. Al final, los asistentes no solo habrán adquirido habilidades valiosas, sino que también habrán creado funciones mejoradas con IA que podrán llevar a sus proyectos o lugares de trabajo.Ya seas un desarrollador web experimentado curioso acerca de la IA o estés buscando expandir tus habilidades en áreas nuevas y emocionantes, "Masterclass: Integrando LangChain con JavaScript para Desarrolladores Web" es tu puerta de entrada al futuro del desarrollo web. Únete a nosotros para desbloquear el potencial de la IA en tus proyectos web, haciéndolos más inteligentes, interactivos y atractivos para los usuarios.
Next.js 13: Estrategias de Obtención de Datos
React Day Berlin 2022React Day Berlin 2022
53 min
Next.js 13: Estrategias de Obtención de Datos
Top Content
WorkshopFree
Alice De Mauro
Alice De Mauro
- Introducción- Prerrequisitos para la masterclass- Estrategias de obtención: fundamentos- Estrategias de obtención – práctica: API de obtención, caché (estática VS dinámica), revalidar, suspense (obtención de datos en paralelo)- Prueba tu construcción y sírvela en Vercel- Futuro: Componentes de servidor VS Componentes de cliente- Huevo de pascua de la masterclass (no relacionado con el tema, destacando la accesibilidad)- Conclusión