Panorama-tab-groups: Cambiar de grupo de pestañas es lento y requiere muchos recursos

Creado en 29 dic. 2018  ·  7Comentarios  ·  Fuente: projectdelphai/panorama-tab-groups

¿Hay alguna forma de que esto se pueda arreglar?

Comentario más útil

Veo en el código que la página se recarga cada vez que se cambia la vista del grupo de pestañas. Cuando se activa el evento visibilitychange porque el documento es visible ( document.hidden === false ) llama a captureThumbnails para cada pestaña, luego vuelve a cargar la página y luego llama a captureThumbnails de nuevo. Almacena las miniaturas en sesión, pero nunca las carga. Entonces, hay margen de mejora aquí:

  • No recargues la página cada vez que se muestre
  • No capture miniaturas justo antes de volver a cargar la página
  • Busque miniaturas de la sesión en lugar de volver a capturarlas (o no las guarde en la sesión, si no es necesario)

Puedo echarle un vistazo a estos si quieres

Todos 7 comentarios

🤔 Experimenté un cambio ligeramente más lento con muchos grupos.

¿Podría decirnos algunos números, por favor?

¿Cuántos grupos / pestañas tienes?
¿Cómo se mide la intensidad de los recursos?

Tengo dos grupos, uno con 219 pestañas y el otro con seis.

Los ventiladores de mi sistema comienzan a girar y si estoy reproduciendo audio a través del modo de lector. El audio se detiene y tartamudea.

Sistema: Por la noche, Fedora 29, CPU Intel® Core ™ i7-4710HQ a 2,50 GHz × 8, GeForce GTX 860M / PCIe / SSE2.

Veo en el código que la página se recarga cada vez que se cambia la vista del grupo de pestañas. Cuando se activa el evento visibilitychange porque el documento es visible ( document.hidden === false ) llama a captureThumbnails para cada pestaña, luego vuelve a cargar la página y luego llama a captureThumbnails de nuevo. Almacena las miniaturas en sesión, pero nunca las carga. Entonces, hay margen de mejora aquí:

  • No recargues la página cada vez que se muestre
  • No capture miniaturas justo antes de volver a cargar la página
  • Busque miniaturas de la sesión en lugar de volver a capturarlas (o no las guarde en la sesión, si no es necesario)

Puedo echarle un vistazo a estos si quieres

¡Eso sería genial! Gracias por investigar esto :) Todavía estoy de vacaciones hasta el sábado por la noche, hora del Pacífico, así que agradezco todo el trabajo que han estado haciendo.

Lo he investigado un poco y creo que ayudaría con algún tipo de biblioteca virtual de dom aquí. Sin embargo, dudo en reaccionar, pero se necesita algo para evitar la recarga de toda la página cada vez que se muestra la página. Lo que se necesita es una forma sencilla de actualizar el dom con solo las cosas que han cambiado, y dado que potencialmente todo podría haber cambiado cuando se muestra la página, algo más inteligente que actualizar manualmente los nodos del dom probablemente ayudaría. ¿Qué piensas? ¿Alguna biblioteca con la que tengas buenas experiencias?

Puede haber un pequeño caso de sobreingeniería aquí. Lo primero que pensé fue ¿qué tal una opción para deshabilitar las miniaturas? De esa manera, las personas con una gran cantidad de pestañas podrían experimentar una mejora inmediata sin que tengamos que agregar una gran cantidad de código por adelantado.

Algunas otras cosas en las que podría pensar: la cantidad de pestañas abiertas desde la última vista. Si es lo mismo, simplemente no recargues pestañas. Si hay nuevas pestañas, ¿podría haber una forma de cargar solo esas miniaturas y extraer el resto de la caché? Algo en que pensar mañana

Así que creo que pude haber encontrado (una de) las fuentes más importantes de esto (al menos cuando no cambiaba a la vista panorámica. Esa es su propia lata de gusanos).

Parece que el oyente browser.tabs.onUpdated realidad escucha una amplia gama de eventos, solo algunos de los cuales son importantes para mantener actualizada la vista panorámica. Es de destacar que si no establece ningún filtro, se activará cada vez que una pestaña individual se oculte o se muestre, que es algo que sucede varias veces cada vez que cambia de grupo. Filtrar algunos de los eventos menos relevantes parece acelerar las cosas de manera bastante masiva.

Actualmente estoy trabajando en una rama que incluye varias optimizaciones de rendimiento sustanciales, incluida la anterior. Me llevará un poco más de tiempo terminar (especialmente porque todavía hay un pico de CPU inexplicablemente largo que estoy tratando de rastrear), pero parece bastante prometedor hasta ahora.

¿Fue útil esta página
0 / 5 - 0 calificaciones