Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 15.08.2023, 18:32
Кандидат Javascript-наук
Отправить личное сообщение для Борис К Посмотреть профиль Найти все сообщения от Борис К
 
Регистрация: 22.02.2017
Сообщений: 145

Сообщение от ksa
Проверь протокол - нужен https.
Протокол https есть, а толку нет!(((
Ответить с цитированием
  #12 (permalink)  
Старый 15.08.2023, 19:34
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,704

На форуме есть ошибка. С некоторых страниц (в основном с главной) переход в тему осуществляется по http, а не по https.
Сначала с главной надо войти в раздел, а потом в нужную тему.
Ответить с цитированием
  #13 (permalink)  
Старый 16.08.2023, 10:12
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

В тот момент, когда "не дает плюсануть", нужно проверить протокол... Просто дописать s и нажать Enter - тогда будет работать.

Правда будет еще одно ограничение - что-то типа "Вы уже плюсовали его, для его плюсования нужно сначала плюсануть кого-то еще".
Ответить с цитированием
  #14 (permalink)  
Старый 16.08.2023, 15:04
Аватар для rgl
rgl rgl вне форума
Профессор
Отправить личное сообщение для rgl Посмотреть профиль Найти все сообщения от rgl
 
Регистрация: 28.02.2011
Сообщений: 349

Сообщение от voraa Посмотреть сообщение
Картинка все равно будет обновляться так, как она может. И именно requestAnimationFrame говорит: Выполни эту функцию перед очередным обновлением. От того, что поставить 4мс экран не будет обновлятться быстрее Если у вашего монитора частота 60Гц, то это как раз и будет 1/60 ~ 16.67 мс. Быстрее никак. Медленнее - может быть, если поток занят какой то тяжелой задачей, тогда очередное обновление будет только после ее окончания.
Когда я говорил "успевает за 4ms" имел ввиду что при значениях 4 и больше функция вызывается (и успевает все сделать) примерно с соответствующей частотой. Понятно, что реально видимая картинка никак не может меняться чаще, чем частота монитора. Но вот вопрос - должна ли программа учитывать частоту монитора и работать по разному с разными мониторами? Однозначно ответить тут нельзя, у каждой точки зрения есть свои аргументы за и против.
Ответить с цитированием
  #15 (permalink)  
Старый 16.08.2023, 15:23
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,493

rgl, ну на самом деле есть два аргумента, один из которых ультимативный: производить перерасчёт ровно столько раз сколько надо для установленной частоты - гораздо оптимальнее, чем делать это с заданным интервалом, в вашем случае выигрыш по ресурсам будет в 16/4 = 4 раза.
Второй аргумент, если интересно, это то, что таймер рассинхронизирован с кадрами, из-за чего может возникать пропуск кадра и небольшое дёрганье анимации.
__________________
29375, 35
Ответить с цитированием
  #16 (permalink)  
Старый 16.08.2023, 15:43
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,704

Сообщение от rgl
Но вот вопрос - должна ли программа учитывать частоту монитора и работать по разному с разными мониторами?
Да. Зачем делать лишние расчеты и изменения в DOM, которые все равно не будут визуализированы?
Ответить с цитированием
  #17 (permalink)  
Старый 16.08.2023, 15:55
Аватар для rgl
rgl rgl вне форума
Профессор
Отправить личное сообщение для rgl Посмотреть профиль Найти все сообщения от rgl
 
Регистрация: 28.02.2011
Сообщений: 349

Оба аргумента в некоторых случаях теряют силу. 4ms - это не рабочее значение а, как бы, проверка на прочность. Мне хотелось быть уверенным что производительности с запасом хватает.
А что если для моей задачи достаточно, скажем, 50 ms? По производительности никакого проигрыша, наоборот, в случае requestAnimationFrame мне нужно делать лишние действия - решать уже пора или еще нет. И дергание анимации может возникнуть, если оба числа близкие, напр. 16 и 20 или 16 и 10, а если они отличаются в разы (в любую сторону, то (с этой точки зрения!) все ОК. Скажем, задаю интервал 50 ms, ну иногда картинка будет меняться каждый пятый кадр, а иногда через 6. Никакого дергания.
Ответить с цитированием
  #18 (permalink)  
Старый 16.08.2023, 16:02
Аватар для rgl
rgl rgl вне форума
Профессор
Отправить личное сообщение для rgl Посмотреть профиль Найти все сообщения от rgl
 
Регистрация: 28.02.2011
Сообщений: 349

Сообщение от ksa Посмотреть сообщение
Правда будет еще одно ограничение - что-то типа "Вы уже плюсовали его, для его плюсования нужно сначала плюсануть кого-то еще".
И, похоже, не одного
Ответить с цитированием
  #19 (permalink)  
Старый 16.08.2023, 17:49
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,704

Сообщение от rgl
А что если для моей задачи достаточно, скажем, 50 ms? По производительности никакого проигрыша, наоборот, в случае requestAnimationFrame мне нужно делать лишние действия - решать уже пора или еще нет.
Если ваша задача занимает 50 мс, то обновление кадра произойдет через 50мс. Движок не прерывает выполнение задачи для визуализации очередного кадра. Есть четкий цикл выполнения
- Выполнение задачи,
- выполнение микрозадач,
-Если подошло время обновления кадра, то
- выполнение функции из requestAnimationFrame
- перерасчет стилей и компоновка
- визуализация кадра.

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

И, кстати, setInterval (f, 4) - не означает выполнить через 4 мс. Это означает поставить в очередь задач через 4 мс. Если в очереди уже есть задачи, которые в сумме выполняются 50мс, то значит функция будет выполнена через 50мс.

Последний раз редактировалось voraa, 16.08.2023 в 17:58.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
setInterval / clearInterval Alex196 Общие вопросы Javascript 2 19.04.2019 09:44
Ускоряется setInterval Tord002 Общие вопросы Javascript 1 10.12.2015 23:09
Оптимизация JS WeMeSder Общие вопросы Javascript 0 13.06.2014 23:51
setInterval и глобальные переменные Почемучкин Events/DOM/Window 11 11.08.2012 14:44
Проблема в document.write при использовании setInterval() GOll Общие вопросы Javascript 21 06.10.2008 17:38