Показать сообщение отдельно
  #23 (permalink)  
Старый 17.12.2011, 03:41
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от Aetae Посмотреть сообщение
Скажу одно: для нормального быстродейстия все таймеры должны выполняться одним единственным setTimeout'ом
меня тоже эта мысль посетила, но вскоре я увидел одну трудность, а через время и её решение.

дело в том, что время у таймеров не одно. такое легко прокатывает в анимировании - каждые 10мс (для поддержания фпс) проходиться по всем элементам анимирования выставлять им свойства. всё просто.

но тут такое не прокатывает. так как время у таймеров разное - к примеру,у одного 300мс, у второго - 350мс.

получается, что "главный таймер" (тот, что один) должен вызываться каждые 0 < x < 50мс(причем, x % 5 == 0) для того, чтобы попасть в таймер с 300мс и в таймер с 350 мс.

а что этот таймер будет делать во время того времени (к примеру, в 50,100,150мс после своего запуска), как он простаивает? вызываться каждые 50мс опять и проверять, нужен ли он кому?

этот последний абзац - брешь в стене производительности. пустой перевод процессорного времени. на двух таймерах этого не будет заметно, но в масштабах проекта (куча таймеров) это может выдать результат в виде тормозов или повышенной загруженности ЦП. как же это можно исправить? *ехидно хихикает*. не сказать чтобы я решил этот вопрос, но какие-то задатки есть .

Сообщение от Livanderiaamarum Посмотреть сообщение
но я с вами согласен, сделаю массив таймеров в которых не указали ИНОЕ от секунды время калбаков, и буду его вызывать одним сеттаймаутом.
и много ли таких будет? вы после всех своих мыслей таймер рассматриваете только как "таймер обратного отсчёта"? да, я знаю, имя темы и все дела, но раз уж взялись за разработку темы, то что себя рамками ограничивать
Ответить с цитированием