Сообщение от Aetae
|
Скажу одно: для нормального быстродейстия все таймеры должны выполняться одним единственным setTimeout'ом
|
меня тоже эта мысль посетила, но вскоре я увидел одну трудность, а через время и её решение.
дело в том, что время у таймеров не одно. такое легко прокатывает в анимировании - каждые 10мс (для поддержания фпс) проходиться по всем элементам анимирования выставлять им свойства. всё просто.
но тут такое не прокатывает. так как время у таймеров разное - к примеру,у одного 300мс, у второго - 350мс.
получается, что "главный таймер" (тот, что один) должен вызываться каждые
0 < x < 50мс(причем,
x % 5 == 0) для того, чтобы попасть в таймер с 300мс и в таймер с 350 мс.
а что этот таймер будет делать во время того времени (к примеру, в 50,100,150мс после своего запуска), как он простаивает? вызываться каждые 50мс опять и проверять, нужен ли он кому?
этот последний абзац - брешь в стене производительности. пустой перевод процессорного времени. на двух таймерах этого не будет заметно, но в масштабах проекта (куча таймеров) это может выдать результат в виде тормозов или повышенной загруженности ЦП. как же это можно исправить?
*ехидно хихикает*. не сказать чтобы я решил этот вопрос, но какие-то задатки есть
.
Сообщение от Livanderiaamarum
|
но я с вами согласен, сделаю массив таймеров в которых не указали ИНОЕ от секунды время калбаков, и буду его вызывать одним сеттаймаутом.
|
и много ли таких будет? вы после всех своих мыслей таймер рассматриваете только как "таймер обратного отсчёта"? да, я знаю, имя темы и все дела, но раз уж взялись за разработку темы, то что себя рамками ограничивать