|
Проблема с setInterval при длительных функциях
|
|||
---|---|---|---|
#18+
Тема такая. Имеется функция, которая может выполняться дольше, чем заданный интервал ее вызова. Если функция выполняется медленнее, чем установленный интервал, то складывается ощущение, что очередной вызов функции выполняется с большой задержкой (не сразу после окончания предыдущего выполнения функции и даже не через указанный интервал). Для проверки набросал код: Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27.
Результат оказался следующим: Код: powershell 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
разница между очередными строками такая: 2605 2716 2613 2713 ... То есть время выполнения функции 2605, а время между окончанием первого выполнения и началом второго 2716. И это совсем не 100 миллисекунд, как я просил у setInterval. А по докам JavaScript если функция выполняется дольше указанного интервала, то запускаться она следующий раз должна из очереди моментально и без задержек ( http://javascript.info/tutorial/settimeout-setinterval) Понятно, что console.log асинхронно выводит строки 'start working' и 'work done', но не на столько ведь... В чем может быть дело, подскажите, пожалуйста. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2013, 21:19 |
|
Проблема с setInterval при длительных функциях
|
|||
---|---|---|---|
#18+
Проблема в загрузке единственного треда на 2.6 секунды бесполезной работы, после которой фреймворку нужно прийти в себя. Таймеры в JS не являются точными, они не обязаны вызываться ровно каждые 100мс как в системах реального времени. Судя по всему пишется какой-то код для игр, в этом случае лучше логику игры завязывать не на "тики" системы, а на функцию от времени. На "тики" завязывались в далекие года первых игр, когда долгожданный апгрейд проца ВНЕЗАПНО ускорял все процессы в играх на 200-300%. Ну и вообще, можно же и погуглить http://stackoverflow.com/questions/12433296/node-js-setinterval-skipping-calls ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2013, 23:36 |
|
|
start [/forum/topic.php?fid=24&fpage=3&tid=1480855]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
29ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
2ms |
others: | 15ms |
total: | 127ms |
0 / 0 |