El muelle se mueve en el compositor, y una ventana que se mueve ya no re-erena la herramienta en su interior

Performancekamo-internal
Se descapó
17 de septiembre de 2026 a las 19:43 UTC
Autor
Kamo
Compromit
905fba8

Todo sobre una ventana de herramientas emergente que MOVES - re-embalaje de la fila, trading lugares con una tira hacer clic, saliendo de una fila detrás, un arrastre, un tiro de costura, tomando y dejando el panel maximizado - estaba costando un pase de diseño y una re-render completa de todo el contenido de cada ventana abierta por fotograma. Medido en el arnés del muelle con ocho ventanas abiertas (cromo sin cabeza, antes/después, tres carreras cada uno): - un clic de tiras: 12-14 pases de diseño - 1, tiempo de script 87-104ms - 44-52ms - un arrastre de 40 movimientos de la barra de título: 168 re-reescaleras de ventanas CONTENIDO - 0, y 86 lecturas de diseño forzado - 3 - capas de filtro de fondo realmente pintadas: 8 de 8 - 5 de 8 (sólo las ventanas que están detrás) Cada ventana termina en el mismo píxel, y cada transición viaja por el mismo camino por el mismo Marcos: dock--ofloat, float--dock, dock---maximizado y maximizado-dock todos los de la misma muestra endpoints, idénticos conteos de marco móvil y idéntico paso más grande. La única diferencia de píxeles en El resto es la fase antialiasing subpixel en los bordes de glifo en ventanas atracadas - las mismas posiciones, las mismas posiciones, lo mismo peso de la carrera (2649 vs 2643 píxeles de tinta), la misma energía de borde (5.47 vs 5.53). Lo que cambió: - Se coloca una ventana acoplada por "translate" en vez de "izquierda"/-top, con el ascensor flotante doblado. Los otros tres regímenes se mantienen en absoluto y no se traducen en absoluto, y la entrega es exacta porque todo "izquierda", "top" y "translate" ya comparten un reloj de transición: dos rampas en una curvar suma a la rampa entre los endpoints. Deliberadamente no cambiará - no compró nada O bien la sonda podía ver y cuesta una capa por ventana para la sesión. - RelayoutWindows responde al array SAME cuando nada se movió. Siempre contestó las mismas ventanas. y una matriz fresca, por lo que cada uno de los quince que llamantes de la tienda.relayout () - incluyendo el sincronización de la barra de desplazamiento que corre 120ms después de cualquier mutación DOM en cualquier lugar del documento - re-renderizado cada lector de la lista de ventanas. -usadoToolWindowsStable(): la lista de ventanas con su geometría ignorada. Los siete cuerpos de herramientas, el tres puentes sin leer y el vigilante del logro todos lo leen por una boolea cada uno y ninguno ha alguna vez lee una caja, por lo que un arrastre de costura de altura ya no rediseña cada lista de mensajes en pantalla. - UtilizaciónToolWindowActions (): las llamadas, por identidad, por lo que un llamante que sólo despacha no es Re-re-renderizado por una ventana moviéndose. - Ejecuta su medición de borde derecho entre los eventos que pueden cambiarlo. El Llama en fase de render-ocse en ToolDock estaba enjuagando un diseño sucio sesenta veces por segundo durante un lastre. - DockedToolWindow y "ToolWindowBody": un límite de memo por ventana y por herramienta, con cada uno de los llamada atado una vez por la vida de la ventana. Memoizados "MaximizedTabStrip", MaximizedTab, "ChatNavigatorPanel", "DockSnapIndicator", "HexHeadSpring" y "HexHeadPopover" también. - El velo de tiras "backdrop-filter" es "visibilidad": oculto cuando la ventana no está detrás. Es transiciones discretamente, por lo que el desvanecimiento todavía juega en su totalidad antes de que la capa deje de ser pintada. - El lazo de tiro de cabeza hex ya no marca las garrapatizas React State por marco; los senderos del cometa corren su propio Marco de animación y escribir atributos SVG, por lo que un lanzamiento deja de volver a transmitir todo el escenario. - El barrido de llegada del título-bar se derriba cuando termina en lugar de aparcar fuera de marco para la sesión, y los fotogramas clave del shell se mimoizan - tres de las cinco ramas devuelvan a keyframe ARRAY, por lo que un intercambio medio de re-render se utiliza para reiniciar la disolución cruzada. Los pines de "dockRenderCost.test.tsx" todo como cuenta; el caso de identidad de relevo falla en HEAD.

Todos los cambios

Como lo que ves enviaste?

Todo llega a su espacio de trabajo por sí solo. Comience en el plan gratuito y lea esta página de nuevo en un mes.

Arranzar gratis para siempreVer Precios