JavaScript

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

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

Я собираюсь каждые 20 мили секунд читать их атрибут dir или какой-либо другой и менять его значение. Какая будет идти нагрузка на html и страницу в целом, если я буду совершать такой обход для 120-ти уже полученных элементов в коллекции и менять их атрибуты раз в 20 мили секунд?
DS
De Sad
1
Никакая. Но getElementsByClassName("class") надо заменить на querySelectorAll(".class"); — с точкой.

Первое пересобирает все элементы при любом обращении (цикл из 120 элементов - 120 раз заново соберутся все элементы), второй собирает один раз и всё. Второй вариант будет сильно быстрее.
Алексей Савинов
Алексей Савинов
62 360
Лучший ответ
Максим Каримов >> getElementsByClassName("class") надо заменить на querySelectorAll(".class")
false.
Вместо однократного получения живой коллекции, долбиться в апи с частотой весеннего кролика? Более вредного совета нельзя и представить :(
Методы работы с DOM не читают теги.
Несколько сильная нагрузка от выполнения операции, которая никогда не выполняется? Ну, эта нагрузка равна нулю.

>> Какая будет идти нагрузка на html и страницу в целом
Во-первых, странице фиолетово: нагрузка от выполнения кода ляжет на CPU.
Во-вторых, степень этой нагрузки почти целиком зависит от количества рефлоу-операций выполняемых браузером, и формулировка "менять значение" ни о чем не говорит.
В-третьих, браузер тебе просто не позволит выполнять изменения DOM каждые 20мс (это возможно только с анмиэйшн апи, и при выполнении полной итерации за <3мс, что ооочень маловероятно).
В-четвертых, не делай так: создание условий интенсивной нагрузки на проц юзера - это плохо. К тому же, бессмысленно: такие страницы останутся без посетителей (99% гарантия).
Максим Каримов
Максим Каримов
86 222
1 Щас браузеры адаптированы к максимально тупым разрабам по этому страница не зависнет даже если на ней в js запустить бесконечный цикл..
2 с точки зрения js память у браузера почти резиновая - он начинает немного поддергиваться от переполнения только если ему на страницу выгрузить половину записей гигабайтной таблицы из базы. Просто скорость обработки замедлится т к браузер будет кешировать все на диск но страница останется в рабочем состоянии
3 ни один нормальный программист так не делает всё выплёвывает данные порционно по 20 записей и кнопку "следующая сираница"
4 по поводу получения элементов - естественно самый быстрый способ это тот который предоставляет браузер нативными функциями. Но по большому счету других способов нет, все ведут к этому. Из них самый быстрый естественно по ид но он не всегда удобен .