Hola, soy Lina. Soy desarrolladora front-end en Physics X. Hoy les mostraré un experimento de aplicación de producción donde intercambié bibliotecas de gestión de estado y medí su rendimiento.
La pregunta es, ¿la elección de la biblioteca afecta significativamente el rendimiento, o las diferencias son lo suficientemente pequeñas como para que debamos priorizar otros parámetros? Elijo una de nuestras aplicaciones para experimentos. Optimizer es nuestra herramienta de ingeniería para ejecutar y explorar trabajos de optimización. Se conecta a nuestras bibliotecas internas de computación e IA, por lo que podemos definir objetivos, restricciones, parámetros, ejecutar experimentos y analizar los resultados todo en un solo lugar.
¿De dónde provienen todos estos datos para la visualización? Como entrada, tenemos una muestra con métricas, parámetros y geometría. Como salida, obtenemos muchos candidatos. En cada paso de un trabajo de optimización, podemos tener miles de candidatos, y puede haber miles de pasos. Almacenamos todos estos datos en una base de datos y los enviamos a la web a través de REST API para inspeccionarlos de diferentes maneras. Hay muchos datos, así que siempre estoy trabajando en visualizarlos claramente de una manera más rápida. En realidad, se ve así. UI pesada en datos, tablas de cuestionarios, gráficos, actualizaciones en vivo y 3D. Construimos esto el año pasado, y usamos Recoil para la gestión de estado. Era rápido, simple y permitía hasta este año. Desafortunadamente, Recoil fue archivado, así que tenemos que movernos.
Pero, ¿cómo decidimos a qué cambiar? Primera idea, JotAi. Modelos similares, migraciones fáciles de átomos y selectores a átomos y átomos derivados. Cambios mínimos de código. También usamos Redux toolkit en otra aplicación, así que el equipo lo conoce, y tiene un ecosistema fuerte y flujo predecible. Dustant es liviano con actualizaciones directas y selectores simples. Mubex ofrece estados reactivos y valores calculados con suscripciones granulares. En resumen, no teníamos caminos realistas. Así que ahora aquí las bibliotecas de gestión de estado que compararé. Dustant, pequeña tienda global con actualizaciones directas, Redux toolkit, tienda centralizada con flujo de acción-reductor, Recoil, estado basado en átomos con selector, JotAm, estado basado en átomos con datos derivados, Mubex estado reactivo que se sincroniza automáticamente con la UI. Todos ellos tienen diferentes internos, diferentes diseños y diferentes costos cuando están en funcionamiento y liberados. Pero la pregunta es, ¿esta diferencia realmente importa en una aplicación real? Uso la misma aplicación, mismas páginas, mismos componentes, mismos conjuntos de datos, mismas interacciones de UI. Solo intercambio integraciones de gestión de estado. Sin reescritura de arquitectura. Y debido a que esta aplicación fue originalmente escrita para Recoil, otras bibliotecas pueden encontrar patrones que no son perfectos para ellas.
Comments