Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   setInterval vs for Что лучше?:) (https://javascript.ru/forum/misc/42481-setinterval-vs-chto-luchshe.html)

koeshiro 28.10.2013 19:28

А тут прикол в другом. Если не очистить set Interval функция будет себя вызывать вечно. По этому set Time Out написал я зря. И понимаю что нужно спать :write:

Dorian_bs 28.10.2013 19:33

koeshiro, я понял)) Но Ваш пример отличается от моего только тем, что у меня пример выполняется бесконечно, а Вы останавливаете выполнение функции заданным числом "num" - количеством раз.
Меня ведь интересует именно сам цикл, а не его остановка)

А как же на счет setInterval? Почему бы не использовать эту функцию. Ведь ее природа основывается на предложенном Вами алгоритме

koeshiro 28.10.2013 19:41

Dorian_bs, ну таки я говорил. что к чему) В любом случае придёться делать что-то что не даст заполнить весь ОЗУ =)

Dorian_bs 28.10.2013 19:49

Я протестировал. Создал пустую страницу в Google Chrome.
В диспетчере задач хром показывает, что пустая страница есть 8000кб. памяти.

Если использовать цикл for in (i < 1000) в setInterval 200mls, потребление памяти возрастает до 13 324кб. Озу 90-94.
Если создать 1000 setInterval с 200mls - потребление памяти возрастает до 53 181кб. Озу 90-95.

В первом случае вкладку не удается просто перезагрузить. Все время ожидание.
Во втором - страница не так сильно глючит и с ней можно работать.

Даже не знаю, что все же лучше. Ибо ОЗУ жрет и там и там

Dorian_bs 28.10.2013 19:55

koeshiro, спасибо за помощь)

Товарищи, есть еще какие либо соображения по этому поводу?

koeshiro 28.10.2013 20:07

Dorian_bs,
Можно подчищать память в ходе выполнения.

Dorian_bs 28.10.2013 21:39

Что Вы имеете ввиду?

nerv_ 28.10.2013 22:13

Цитата:

Сообщение от Dorian_bs
Например на сервере есть 1000 игроков. Каждые 0.2 сек нужно каждому отправить данные.

Что лучше?

события с сервера или WebSocket

обзор

Dorian_bs 28.10.2013 22:26

nerv_, спасибо, но вопрос не в этом. На данный момент я использую websocket nodejs. Суть вопроса не в реализации передачи данных, а в методе циклической отправки сформированного пакета

Dorian_bs 28.10.2013 22:33

Вообщем я остановился на варианте создания setInterval для каждого игрока. Да, это будет есть память, но избавит от возможный коллизий в случае, если for не успеет обработать каждого игрока за интервал установленный в setInterval.

Всем огромное спасибо!)


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