Страницы

Поиск по вопросам

вторник, 26 ноября 2019 г.

Чем лучше реализовывать частые постоянные вычисления?


Необходимо выполнять определенный код 30-40 раз в секунду. Возможные задержки реализаци
надо учитывать, как и вариант, что код будет слишком тяжелым, чтобы исполнить за указанный участок времени.

Для отрисовки ввели window.requestAnimationFrame, а что ввели для вычислений?

Пользоваться setTimeout с Date.getNow() для определения времени, затраченного н
выполнение кода - идея не очень. Раньше задержка setTimeout была 3-4мс, сейчас уменьшили до 0-2. Но все-равно, все задается в миллисекундах и погрешность довольно высока.

Ввели Promises - для другого, но я видел где-то безумную реализацию таймера на них.

Ввели Web Workers - по идее, то что надо - вычисления в отдельном потоке, без замедлени
основной страницы. У них там, вроде-бы, сложности с взаимодействием со страницей, но, по сути, это не особо то и нужно в большинстве случаев.

Добавили window.performance.now(), да и вообще время с микросекундами, что прекрасно, но реализацию высокоточного таймера на микросекундах я так и не увидел.

В общем, что использовать, для, грубо говоря, игры?
    


Ответы

Ответ 1



Вам могут помочь underscore функции Throttle и Debounce Я пользуюсь ими в проектах с requestAnimationFrame для снижения нагрузок при частом вычислении значений, которые обновляются реже, чем смена кадров. Реализация функций прекрасно описана и прокомментирована в исходниках undersocre

Комментариев нет:

Отправить комментарий