forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Основной форум (http://forum.boolean.name/forumdisplay.php?f=49)
-   -   Куда девается время?! (http://forum.boolean.name/showthread.php?t=13298)

IDOL 1234 07.09.2010 18:33

Куда девается время?!
 
Что-то не так с циклом задержки. Очень много времени расходует свыше отведённых 50 мс. Посмотрите пожалуйста
repeat
...

repeat
delay(1);
until(lastSavedTime-GetRelativeTimeMs<-50);
lastSavedTime:=GetRelativeTimeMs;

...
until(false);
Цикл выполняется 4-5 раз и жрёт где-то 63 мс. При том, что все остальные команды,находящиеся в основном цикле, расходуют 15-30 мс,

cherepets 07.09.2010 20:59

Ответ: Куда девается время?!
 
ты философ))))

я обычно делаю так:
delay(getRelativeTimeMs-lastSavedTime);

вроде потерь не замечал, хотя никогда особо и не мерял

Dj_Alex 07.09.2010 21:04

Ответ: Куда девается время?!
 
вообще нужно эту разницу брать по модулю, т.к. getRelativeTimeMs возвращает в диапазоне от -2^31 до 2^31, т.е. может принимать отрицательные значения

IDOL 1234 07.09.2010 22:18

Ответ: Куда девается время?!
 
Ненавижу философию... А модуль я отсюда стёр, чтобы некоторые особо умные не говорили, что это он тормозит ;) (на всякий случай: я не о присутствующих)
delay(getRelativeTimeMs-lastSavedTime); - а как это работает? Идею понял, но всё же что-то не то... Может, что-то вроде delay(50-abs(getRelativeTimeMs-lastSavedTime)); ?



И ещё вопрос по этой теме: нельзя ли выводить на экран графическую инфу, координаты которой хранятся в типе REAL, не используя тормознутый TRUNC?

cherepets 08.09.2010 12:17

Ответ: Куда девается время?!
 
а, ну да)) ты прав. только без модуля я обычно делаю заранее проверив что число >0.

Dj_Alex 08.09.2010 12:27

Ответ: Куда девается время?!
 
Цитата:

Сообщение от IDOL 1234 (Сообщение 161242)
И ещё вопрос по этой теме: нельзя ли выводить на экран графическую инфу, координаты которой хранятся в типе REAL, не используя тормознутый TRUNC?

чем это trunc тормознут, он ж вроде только отбрасывает дробную часть.
а вообще координаты для графики нужны в int, т.к. пиксель ето дискретная штука

Ksanatos 09.09.2010 14:27

Ответ: Куда девается время?!
 
trunc округляет число, потому и тормознут.
Делай что-то вроде такого y:=x-frac(x);
это я вычитал в хелпе от odd по мойму

cherepets 09.09.2010 21:03

Ответ: Куда девается время?!
 
trunc только отбрасывает. округляет round (не уверен в наличии его в МП).
в любом случае, real у меня всегда выходит только при делении, а значит проще делить div'ом чем округлять/отбрасывать.


Часовой пояс GMT +4, время: 09:10.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot