Panorama-tab-groups: Переключение групп вкладок происходит медленно и очень ресурсоемко.

Созданный на 29 дек. 2018  ·  7Комментарии  ·  Источник: projectdelphai/panorama-tab-groups

Можно ли как-нибудь исправить это?

Самый полезный комментарий

Из кода я вижу, что страница перезагружается каждый раз, когда переключается на просмотр группы вкладок. Когда событие visibilitychange запускается из-за того, что документ виден ( document.hidden === false ), он вызывает captureThumbnails для каждой вкладки, затем перезагружает страницу, а затем вызывает captureThumbnails снова. Он хранит эскизы в сеансе, но никогда не загружает их. Итак, здесь есть возможности для улучшения:

  • Не перезагружайте страницу каждый раз, когда она отображается
  • Не делайте миниатюр прямо перед перезагрузкой страницы.
  • Искать эскизы из сеанса вместо повторного захвата (или не сохранять в сеансе, если он не нужен)

Я могу взглянуть на них, если хочешь

Все 7 Комментарий

🤔 У меня было немного более медленное переключение с большим количеством групп.

Не могли бы вы назвать нам цифры?

Сколько у вас групп / вкладок?
Как вы измеряете ресурсоемкость?

У меня есть две группы, одна с 219 вкладками, другая с шестью.

Вентиляторы в моей системе начинают вращаться, и если я проигрываю звук в режиме чтения. Звук останавливается и заикается.

Система: Nightly, Fedora 29, процессор Intel® Core ™ i7-4710HQ @ 2,50 ГГц × 8, GeForce GTX 860M / PCIe / SSE2.

Из кода я вижу, что страница перезагружается каждый раз, когда переключается на просмотр группы вкладок. Когда событие visibilitychange запускается из-за того, что документ виден ( document.hidden === false ), он вызывает captureThumbnails для каждой вкладки, затем перезагружает страницу, а затем вызывает captureThumbnails снова. Он хранит эскизы в сеансе, но никогда не загружает их. Итак, здесь есть возможности для улучшения:

  • Не перезагружайте страницу каждый раз, когда она отображается
  • Не делайте миниатюр прямо перед перезагрузкой страницы.
  • Искать эскизы из сеанса вместо повторного захвата (или не сохранять в сеансе, если он не нужен)

Я могу взглянуть на них, если хочешь

Было бы здорово! Спасибо, что изучили это :) Я все еще в отпуске до субботнего вечера по тихоокеанскому стандартному времени, так что я ценю всю вашу работу, ребята!

Я немного изучил это, и я думаю, что это поможет с какой-то виртуальной библиотекой здесь. Я не решаюсь привести все это в действие, но нужно кое-что, чтобы обойти перезагрузку всей страницы каждый раз, когда она отображается. Что необходимо, так это простой способ обновить dom только теми вещами, которые изменились, и, поскольку потенциально все могло измениться при отображении страницы, вероятно, поможет что-то более умное, чем ручное обновление узлов dom. Что вы думаете? С какой библиотекой у вас есть хороший опыт?

Здесь может быть небольшой случай чрезмерной инженерии. Первое, о чем я подумал, было как насчет возможности просто отключить миниатюры? Таким образом, люди с большим количеством вкладок могут сразу ощутить некоторые улучшения без необходимости предварительного добавления большого количества кода.

Я мог придумать еще кое-что: количество вкладок, открытых с момента последнего просмотра. Если то же самое, просто не перезагружайте вкладки. Если есть новые вкладки, возможно, есть способ загрузить только эти эскизы и вытащить остальные из кеша? Есть о чем подумать завтра

Так что я думаю, что, возможно, нашел (один из) основных источников этого (по крайней мере, если не переключаться на панораму. Это его собственная банка червей).

Похоже, слушатель browser.tabs.onUpdated самом деле прослушивает довольно широкий спектр событий, только некоторые из которых действительно важны для поддержания панорамы в актуальном состоянии. Следует отметить, что если вы не установите какие-либо фильтры, он будет срабатывать каждый раз, когда отдельная вкладка скрывается или отображается, что происходит довольно часто при каждом переключении группы. Кажется, что фильтрация некоторых менее значимых событий значительно ускоряет процесс.

В настоящее время я работаю над веткой, которая включает в себя несколько существенных оптимизаций производительности, включая вышеупомянутое. Это займет у меня немного больше времени (особенно из-за того, что я все еще пытаюсь отследить один необъяснимо долгий скачок производительности процессора), но пока он выглядит довольно многообещающим.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги