Comments 6
MyTimer = function () {
setInterval(function () {
MyFunc(); // прикладной код
}, 100);
}
Тут точно так?
Может имелось ввиду так?
MyTimer = function () {};
setInterval(MyFunc, 100);
Или не понятно. У вас после каждого интервала объявляется ещё один интервал.
0
Не могу понять, почему прыгает (иногда сильно) белая линия, если она должна быть прямой и показывать уровень (в 40 мс по умолчанию)?
0
А почему псевдонагрузка не вынесена в отдельный таймер, который бы конкурировал с основным таймером? В текущей реализации цикл выполняется синхронно и блокирует остальной код до своего завершения. Это (в теории) уменьшило бы фактическое время от одного вызова до другого.
Проверил, всё так и есть. Разница между планируемой задержкой и фактом примерно равна времени блокировки.
Делаем вот так:
И красное сливается с белым.
Проверил, всё так и есть. Разница между планируемой задержкой и фактом примерно равна времени блокировки.
Делаем вот так:
setTimeout(function() {
// Виртуальная нагрузка
var startVirtCalcDate = new Date();
var startVirtCalcTime = startVirtCalcDate.getTime();
APELSERG.MAIN.VirtCalc();
var stopVirtCalcDate = new Date();
var stopVirtCalcTime = stopVirtCalcDate.getTime();
APELSERG.TOOLBOX.prevVirtCalcMsec = APELSERG.TOOLBOX.currVirtCalcMsec;
APELSERG.TOOLBOX.currVirtCalcMsec = stopVirtCalcTime - startVirtCalcTime;
})
И красное сливается с белым.
0
Конкуренция таймеров — это ещё одна интересная тема. В приложении могут конкурировать, например, setInterval и requestAnimationFrame. А ещё, как минимум, прерывания мыши, клавиатуры, изменения в DOM. Поэтому, такое комплексное поведение, лучше рассматривать отдельно.
В данной реализации псевдонагрузка введена:
Для наглядного ответа на ваш комментарий я создал ещё один проект (самому стало интересно) и ввёл конкурентный таймер setInterval (функция APELSERG.MAIN.StartTimer2), который работает для любого выбранного режима. В конкурентный таймер я поместил псевдонагрузку, а из основного таймера — её убрал.
Общие нагрузочные характеристики не улучшились (хорошо видно, если дать нагрузку побольше). А красное сливается с белым — это правильно, так как период ожидания основного таймера стал приближаться к периоду его полного цикла.
Код с конкурентным таймером на GitHub.
Демо с конкурентным таймером на GitHub.
В данной реализации псевдонагрузка введена:
- Для примерной оценки стабильности работы заданного таймера под нагрузкой.
- Для сравнения браузеров (одним достаточно 10 миллионов циклов, другие переваривают миллиард).
Для наглядного ответа на ваш комментарий я создал ещё один проект (самому стало интересно) и ввёл конкурентный таймер setInterval (функция APELSERG.MAIN.StartTimer2), который работает для любого выбранного режима. В конкурентный таймер я поместил псевдонагрузку, а из основного таймера — её убрал.
Общие нагрузочные характеристики не улучшились (хорошо видно, если дать нагрузку побольше). А красное сливается с белым — это правильно, так как период ожидания основного таймера стал приближаться к периоду его полного цикла.
Код с конкурентным таймером на GitHub.
Демо с конкурентным таймером на GitHub.
0
Sign up to leave a comment.
Наблюдение за работой JavaScript-таймеров в реальном времени