Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   DOM медленный? (https://javascript.ru/forum/offtopic/49995-dom-medlennyjj.html)

Gozar 06.09.2014 22:38

DOM медленный?
 
Уже в нескольких местах читаю, мол дом медленный. А есть какой-то пример, где можно посмотреть, что DOM медленный?

Gozar 06.09.2014 23:21

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

melky 07.09.2014 01:20

обычно такое возникает в циклах

bes 07.09.2014 01:28

Цитата:

Сообщение от Gozar
Уже в нескольких местах читаю, мол дом медленный. А есть какой-то пример, где можно посмотреть, что DOM медленный?

http://javascript.ru/forum/misc/3919...ke-tables.html

kobezzza 07.09.2014 08:11

Есть задачи, но в большинстве случаев тормозит из-за кривых рук.

Gozar 07.09.2014 11:02

Цитата:

Сообщение от kobezzza
Есть задачи, но в большинстве случаев тормозит из-за кривых рук.

Это слишком абстрактно, чтобы о чем-то говорило.

Вот bes, привел пример: Если вставить десять тысяч и более строк(tr + td или что-там jq вставляет) посредством jq, то будут тормоза. Вот по подобной причине я так понял, что ONLYOFFICE™ сделан на канвасе и отрисовывает только нужную часть.

Хотелось бы всё таки примеры. Я с подобной проблемой не сталкивался, т.к никогда не выводил за 1 раз более тысячи-двух строк основанных на DOM, поэтому мне и интересны примеры.

kobezzza 07.09.2014 11:18

Да море их: рисование сложных графиков и графов, игры, различные гриды.

Вот последний пример из моей практики: SPA приложение, переход по ссылке со страницы А на страницу Б: если делать в лоб удаление старого DOM и построение нового то очень часто видны "тормоза" - фриз страницы на 200-300 мс, что недопустимо, поэтому фреймворк дробит задачи очистки мусора и рендеринга на потоки и делает всё постепенно, т.е. также делает сам браузер, когда мы переходим по страницам, но в случае SPA это перекладывается на фреймворк.

В большинстве случаев тормоза вызваны не оптимальными изменениями и вставками в DOM, а также не оптимальной работы с событиями.

nerv_ 07.09.2014 15:01

Цитата:

Сообщение от kobezzza
В большинстве случаев тормоза вызваны не оптимальными изменениями и вставками в DOM, а также не оптимальной работы с событиями.

есть такое дело. Например, такая ситуация:
object.isVisible = {Boolean};

в шаблоне в зависимости от флага показывается/скрывается элемент.
Флаг может меняться в ту или иную сторону, пока "не устаканится" :) Псевдо код
var i = 10; 
while(--i) {
    object.isVisible = Math.random() > 0.5;
}

Соответственно, если бы приложение рендерилось после каждого изменения, были бы жуткие лаги.

Gozar 07.09.2014 15:31

nerv_,
Ты по анимацию? Её нужно оптимизировать.

Цитата:

Сообщение от kobezzza
переход по ссылке со страницы А на страницу Б: если делать в лоб удаление старого DOM и построение нового то очень часто видны "тормоза" - фриз страницы на 200-300 мс

A и Б - страницы рендерится с нуля? Насколько сложный в страницах DOM? В SPA может быть частичное изменение DOM, внутри одного раздела не обязательно рендирить страницу с нуля.

Gozar 07.09.2014 15:33

Цитата:

Сообщение от kobezzza
не оптимальной работы с событиями.

Это ты про то, что лучше обработчик вешать на контейнер, а не на кучу вложенных элементов?


Часовой пояс GMT +3, время: 23:32.