Перейти к содержанию
Fire Monkey от А до Я
  • 0

Тормозит выполнение таймера


Rokweb

Вопрос

Таймер с интервалом 1мс заметно подтормаживает во время выполнения анимации TFloatAnimation в Tokyo. У всех так или только у меня?

Изменено пользователем Rokweb
Ссылка на комментарий

Рекомендуемые сообщения

  • 0

Токио сам по себе довольно глючный, особенно до обновления 10.2.3 там и без таймера баги с анимацией, эффектам и низким FPS на ровном месте, в этом случае лучше Берлин использовать (что я и делаю под Android и iOS (Xcode 9 btw) ).

Изменено пользователем ENERGY
Ссылка на комментарий
  • 1

Выше правильно написали о глюках в Tokyo под Android. 

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

Ссылка на комментарий
  • 0

трудно придумать что-то, что может успеть выполниться менее чем за 1 мсек на десктопе, а на мобильном и подавно

так что вы немного остудите жар-то ))

Ссылка на комментарий
  • 0
В 4 апреля 2018 г. в 20:06, ENERGY сказал:

Токио сам по себе довольно глючный, особенно до обновления 10.2.3

Есть смысл переходить с 10.2.2 на 10.2.3? Народ тут писал, что студия вылетать стала на ровном месте. А судя по чейнж логу ни одного серьёзного бага поправлено не было.

В 4 апреля 2018 г. в 19:18, Rokweb сказал:

Таймер с интервалом 1мс заметно подтормаживает во время выполнения анимации

Во-первых интервал в 1мс для таймера не достижим без специальной настройки ОС. Реально события будут приходить 10-23мс. И это при условии, что программа больше ничего не делает. Это не зависит от дельфи, а зависит от винды.

Во-вторых "накладные расходы" таймера при таком обновлении - это основная статья расходов процессора. И вообще так писать - это просто жесть. Любая анимация - это 1000/60мс т.е. частота обновления среднестатистического монитора. И то лучше 1000/30 или 1000/25. Меньше плавности на чуть, зато будет реально работать. Если нужна не анимация, а рассчёт чего-то - это надо выносить в отдельный поток.

Если речь идёт про андроид/яось, то кроме нескольких деталей в целом ситуация не меняется. Писать так нельзя.
 

Ссылка на комментарий
  • 0
1 час назад, Akad сказал:

Есть смысл переходить с 10.2.2 на 10.2.3? Народ тут писал, что студия вылетать стала на ровном месте. А судя по чейнж логу ни одного серьёзного бага поправлено не было.

Во-первых интервал в 1мс для таймера не достижим без специальной настройки ОС. Реально события будут приходить 10-23мс. И это при условии, что программа больше ничего не делает. Это не зависит от дельфи, а зависит от винды.

Во-вторых "накладные расходы" таймера при таком обновлении - это основная статья расходов процессора. И вообще так писать - это просто жесть. Любая анимация - это 1000/60мс т.е. частота обновления среднестатистического монитора. И то лучше 1000/30 или 1000/25. Меньше плавности на чуть, зато будет реально работать. Если нужна не анимация, а рассчёт чего-то - это надо выносить в отдельный поток.

Если речь идёт про андроид/яось, то кроме нескольких деталей в целом ситуация не меняется. Писать так нельзя.
 

Можно бесконечно много рассуждать, тем не менее, констатирую факт - вернулся на Berlin - все стало работать идеально (включаю анимацию без тормозов таймера). Вам стоило убедиться, о чем вы пишите и куда, в теме указано, что речь идёт про Android. Не говоря уже про бред со "специальной настройкой ОС". Стандартный (!) таймер студии НИКОГДА не будет работать с ДЕЙСТВИТЕЛЬНЫМ интервалом в 1 МС. Это всем и так понятно. Не говоря уже про фантастические "10-23 мс". Почему именно 23, а не 24? Почему 10, а не 9? Интервал я указывал для общего понимания необходимой скорости работы.

Ссылка на комментарий
  • 0
24 минуты назад, Rokweb сказал:

Вам стоило убедиться, о чем вы пишите и куда, в теме указано, что речь идёт про Android.

Ни где это не указано. Не надо. Тема в общем форуме, ни в названии, ни в теле поста этого нет. Не умеешь задавать вопросы, не надо тра-ля-ля разводить.

24 минуты назад, Rokweb сказал:

Почему именно 23, а не 24? Почему 10, а не 9?

Не ко мне вопрос, а к разработчикам ОС.

24 минуты назад, Rokweb сказал:

Интервал я указывал для общего понимания необходимой скорости работы.

Если у тебя не правильно организована работа твоей поделки, то ни кто кроме тебя в этом не виноват. Не хочешь помощи - что ты вообще на форуме забыл? Иди на какую-нибудь помойку типа хабра, описывай там как надо софт писать.



 

Изменено пользователем Akad
Ссылка на комментарий
  • 0
4 часа назад, Akad сказал:

Ни где это не указано. Не надо. Тема в общем форуме, ни в названии, ни в теле поста этого нет. Не умеешь задавать вопросы, не надо тра-ля-ля разводить.

Прикрепил скриншот.

 

4 часа назад, Akad сказал:

Не ко мне вопрос, а к разработчикам ОС.

Можно увидеть пруф?

 

4 часа назад, Akad сказал:

Если у тебя не правильно организована работа твоей поделки, то ни кто кроме тебя в этом не виноват. Не хочешь помощи - что ты вообще на форуме забыл? Иди на какую-нибудь помойку типа хабра, описывай там как надо софт писать.

Не ты, а вы. Не видя проекта делать подобные выводы... Вы родственник Мессинга? Выпейте валерьянки и не разводите срач на форуме.

 

3 часа назад, POV сказал:

1 мс == 1000 Гц

Автор реально жаждет 1000 fps? )))))

Да дело то не в FPS. Я даже уточнил вопросом - "такое только у меня или у всех". Повторюсь - в Tokyo (лично у меня) - во время выполнения анимации (OnProcess) TFloatAnimation - TTimer приостанавливает свою работу, повторный (и все дальнейшие вызовы) OnTimer вызываются после OnFinish у TFloatAnimation.

Безымянный.jpg

Ссылка на комментарий
  • 0

услышьте plz. в токио перешли на "правильную" работу в едином потоке с Java. Вообще это хорошо. Но вся FMX писалась в расчете на старую модель. А теперь те фишки не работают )))

когда поменяют - ХЗ

поэтому универсальный ответ - смотрите как это сделано в исходниках, например у TAnimation там все понятно. ProcessMessages точно не будет работать больше. Наконец-то г"внокод умрет. Аллилуйя.

Чтобы ответить на вопрос, как часто может быть вызван таймер, надо не срач на форуме устраивать а просто попробовать. И станет ясно, что 1000 fps не получить. И 100. Возможно, при попутном ветре, 10.

Ссылка на комментарий
  • 0

На винде много примеров реализации таймеров, выдающих дискретность 1 мс. Навскидку - у либы с glscene.org есть подобный таймер, банально сделан через отдельный поток, так что можно обойтись без тюнинга ОС

Ссылка на комментарий
  • 0
В 04.04.2018 в 19:18, Rokweb сказал:

Таймер с интервалом 1мс заметно подтормаживает

Ни одна операционная система (за исключением систем реального времени) не обеспечит вам такую точность. Среда разработки здесь ни при чем. Совсем.

К примеру, на Windows минимально возможный интервал таймера, емнип, 55мс.

При этом нужно понимать, что событие таймера сработает только тогда, когда главный поток не будет ничем занят. А это, поверьте, случается достаточно редко. Грубо говоря - событие отработает "по остаточному принципу".  Т.е. в реальности даже 55мс на Windows будет обеспечено далеко не всегда. Что уж говорить про мобильные платформы.

Вам нужно пересмотреть алгоритм работы.

Изменено пользователем kami
Ссылка на комментарий
  • 0
1 час назад, Tumaso сказал:

Навскидку - у либы с glscene.org есть подобный таймер, банально сделан через отдельный поток

Графические движки не пользуются таймерами, это чревато гигантскими лагами.
QueryPerfomanceCounter и т.п.

Ссылка на комментарий
  • 0
1 минуту назад, krapotkin сказал:

16-18

Не, оказывается я ошибся еще больше. Чтобы окончательно выяснить - залез на https://msdn.microsoft.com/ru-ru/library/windows/desktop/ms644906(v=vs.85).aspx

USER_TIMER_MINIMUM (0x0000000A), -  минимально возможный интервал = 10мс. Но это недостижимый идеал :)))

Ссылка на комментарий
  • 0
  • Администраторы

Если очень хочется. то на Андроид можно использовать posix таймеры. Там среди все вариантов, есть довольно точные. Но в любом случае, как вам уже сказали, вы не получите большую точность от них.

Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...