Javascript setInterval падение производительности с несколькими анимациями - PullRequest
0 голосов
/ 22 июня 2011

Я использую setInterval(foo,ms) для выполнения анимации. Я действительно не хочу публиковать здесь весь код анимации, поскольку он охватывает несколько файлов. Это в основном падающие картинки. Каждую секунду я вызываю ctx.drawImage (img, ...) при обновлении координат для имитации гравитации.

Я разделил холст на две части: одну анимацию слева и одну справа. Когда один из них активирован, частота кадров стабильна и составляет 30 кадров в секунду. Однако, если я активирую их обоих, производительность падает. Это не имеет никакого отношения к перегрузке моего компьютера, так как я могу уменьшить сложность каждой анимации в 10 раз, и проблема сохраняется. Я предполагаю, что setIntervals мешают друг другу.

Мой вопрос заключается в том, безопасно ли выполнять более одного вызова setInterval. Спасибо

Ответы [ 5 ]

1 голос
/ 22 июня 2011

Я бы посоветовал использовать setTimeout, чтобы избежать проблем с производительностью.

Взгляните на этот вопрос setTimeout или setInterval?

Это большая работа по объяснениюРазница между ними и почему вы обычно должны использовать setTimeout.

1 голос
/ 22 июня 2011

Как говорят другие, вы можете иметь как можно больше.Тем не менее, вы должны иметь столько, сколько необходимо для хорошей производительности.Может быть, вы можете найти способ использовать только один интервал для обеих анимаций.

Может быть проблема, если вы используете глобальные переменные.Это может повлиять на анимацию (возможно, даже на производительность, зависит от того, для чего вы их используете).

1 голос
/ 22 июня 2011

Вы можете иметь много setIntervals() без проблем, но имейте в виду, что JS является по сути однопоточным (на страницу). Множественные «параллельные» потоки фактически обрабатываются путем перехода на один поток по коду.

Это означает, что время не будет согласованным, особенно если один из методов занимает значительное время.

0 голосов
/ 22 июня 2011

Да, безопасно запускать несколько setIntervals .. Нет никаких проблем с производительностью при использовании setIntervals .. Профилируйте свой собственный код, вы почти наверняка найдете проблему там.

0 голосов
/ 22 июня 2011

Мой вопрос заключается в том, безопасно ли выполнять более одного вызова setInterval

Краткий ответ: да, абсолютно.

...