Skip to content

Conversation

@lapkoshka
Copy link

Проблема
Пользуясь страницей обнаружил что она сильно просаживет производительность.

Решение
Оптимизировать скрипт flashWord.

Результаты
Frame Rate на CPU 6x Slowdown throttle на старом коде
2022-04-15 20 45 46

Frame Rate на CPU 6x Slowdown throttle на новом коде
2022-04-15 20 45 51

Замер производительности во вкладке Performance Monitor
2022-04-15 20 47 40
Стрелкой указана точка перезагрузки страницы с новым кодом.

Как видно на графике, использование CPU снизилось c ~30-50% до ~3-10%

Что было сделано
Вместо текущей логики скрипта который в реалтайме регулярным выражением искал слова и заменял все содержимое innerHtml элемента .index-seo, принял решение сначала выделить все уникальные слова, обернуть их в уникальный className и составить ассоциативный словарь для быстрого доступа к этим элементам.

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

Пример paint flashing как было до:
image

Пример paint flashing как стало после:
image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants