МБ
Марика Бородина

Насколько сильная нагрузка при прочтении тега через js?

У меня есть переменная, включающая коллекцию 120-ти дивов, полученных через гетЕлементсКлассНейм и в будущем снова получать их не собираюс.

Я собираюсь каждые 20 мили секунд читать их атрибут dir или какой-либо другой и менять его значение. Какая будет идти нагрузка на html и страницу в целом, если я буду совершать такой обход для 120-ти уже полученных элементов в коллекции и менять их атрибуты раз в 20 мили секунд?

ЛП
Лёньчик Пирожков

Никакая. Но getElementsByClassName("class") надо заменить на querySelectorAll(".class"); — с точкой.

Первое пересобирает все элементы при любом обращении (цикл из 120 элементов - 120 раз заново соберутся все элементы), второй собирает один раз и всё. Второй вариант будет сильно быстрее.

Дмитрий Котов
Дмитрий Котов

Методы работы с DOM не читают теги.
Несколько сильная нагрузка от выполнения операции, которая никогда не выполняется? Ну, эта нагрузка равна нулю.

>> Какая будет идти нагрузка на html и страницу в целом
Во-первых, странице фиолетово: нагрузка от выполнения кода ляжет на CPU.
Во-вторых, степень этой нагрузки почти целиком зависит от количества рефлоу-операций выполняемых браузером, и формулировка "менять значение" ни о чем не говорит.
В-третьих, браузер тебе просто не позволит выполнять изменения DOM каждые 20мс (это возможно только с анмиэйшн апи, и при выполнении полной итерации за <3мс, что ооочень маловероятно).
В-четвертых, не делай так: создание условий интенсивной нагрузки на проц юзера - это плохо. К тому же, бессмысленно: такие страницы останутся без посетителей (99% гарантия).

ВГ
Виталий Герасимов

1 Щас браузеры адаптированы к максимально тупым разрабам по этому страница не зависнет даже если на ней в js запустить бесконечный цикл..
2 с точки зрения js память у браузера почти резиновая - он начинает немного поддергиваться от переполнения только если ему на страницу выгрузить половину записей гигабайтной таблицы из базы. Просто скорость обработки замедлится т к браузер будет кешировать все на диск но страница останется в рабочем состоянии
3 ни один нормальный программист так не делает всё выплёвывает данные порционно по 20 записей и кнопку "следующая сираница"
4 по поводу получения элементов - естественно самый быстрый способ это тот который предоставляет браузер нативными функциями. Но по большому счету других способов нет, все ведут к этому. Из них самый быстрый естественно по ид но он не всегда удобен .

Похожие вопросы
Программирование Node. Js
JavaScript node js mineflayer что заменить чтобы роботало?
Что выбрать Python или JS. Помогите разобраться в теме.
Как в переменную js записать текст в несколько строк?
Помогите по js
Как лучше всего на js написать этот код?
Как избавится от конкатенации JS
JS не изменяет стили. Почему ?
Возникли проблемы с JS.
Нужна помощь с JS