JavaScript — много таймеров VS один глобальный таймер, что лучше?

Здравствуйте. Прошу совета.

Допустим, у меня есть массив объектов из 300 элементов. У каждого объекта есть текущие координаты и скорость, т.е. объекты движутся.

С помощью requestAnimationFrame() я хочу отобразить эти объекты на canvas. Так как объекты движутся, мне нужно раз в N миллисекунд менять координаты объекта (где N - зависит от скорости объекта).

Первая идея - каждому объекту повесить таймер, который будет менять ему координаты.
Но тогда, получается, что у меня будет 300 таймеров, каждый из которых будет раз в N миллисекунд производить какие-то расчеты, причем, значения N - довольно маленькие, 5-30 мс.

Немного поразмыслив, натолкнулся на мысль. А может, сделать глобальный таймер, который будет запускать метод, скажем, раз в 5 миллисекунд и уже в этом методе брать каждый объект и высчитывать для него текущие координаты в зависимости от скорости?

Насколько большой будет разница в производительности? Какой из методов себя оправдывает? А может, есть другое решение?
  • Вопрос задан
  • 2950 просмотров
Пригласить эксперта
Ответы на вопрос 2
Scorpi
@Scorpi
Один таймер. Все проекты что я видел используют только один таймер, это вполне разумно и очевидно. С помощью таймера обеспечивается стабильный FPS для всех объектов, а если будет свой таймер для каждого объекта то будет рассинхронизация.
Ответ написан
@Vampiro
Таймер будет отставать, обычно вешают одно событие на процесс "прорисовки" экрана, в котором считают дельту по времени с момента прошлой прорисовки и пересчитывают координаты если надо.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы