Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.18;
Скачать: CL | DM;

Вниз

Разница реакций Windows 98 и Windows X на Sleep и Delay   Найти похожие ветки 

 
Mefodiy   (2004-04-03 19:59) [0]

Привожу кусок кода, который в Windows 98 выполняется нормально, а в Windows XP - раз в 10 медленнее.

 for i := 1 to 72 do
 begin
   with MyBitmap.Canvas do
   begin
     FillRect(ClipRect);
     Font.Size := i;
     TextOut((MyBitmap.Width - TextWidth(s)) div 2,(MyBitmap.Height - TextHeight(s)) div 2,s);
   end;
   BitBlt(PaintBox1.Canvas.Handle,116,140,MyBitmap.Width,MyBitmap.Height,MyBitmap.Canvas.Handle,0,0,SRCCOPY);
   Sleep(delay_time);
 end;

     В чем тут дело ?


 
Defunct ©   (2004-04-03 20:14) [1]

Sleep никогда не будет работать правильно. Синхронизация ОС идет от системного таймера у которого частота 18.2 Гц. Т.е. минимальной задержкой является ~50 мс. Используйте TTimer вместо Sleep.


 
Soft ©   (2004-04-03 22:10) [2]

Defunct ©   (03.04.04 20:14) [1]

В Windows 2000 минимальный квант времени 10ms, так как это система "мягкого" реального времени. Но все зваисит от приоритета задачи, если прооритет довольно низок, то он может пропустить и несколько десятков квантов времени, которые будут отданы более приоритетным задачам.

Синхронизация ОС идет от системного таймера у которого частота 18.2 Гц.

Не идет... Виндовз это значение меняет, поэтому многие досовские программы, использующие этот таймер для синхронизации работают некорректно.


 
Игорь Шевченко ©   (2004-04-03 22:47) [3]


> Синхронизация ОС идет от системного таймера у которого частота
> 18.2 Гц


"Длина временного интервала таймера зависит от аппаратной платнофм и определяется HAL. Например, этот интервал для большинства однопроцессорных х86-систем составляет 10 мс, а на большинстве многопроцессорных х86-систем - 15мс"

(с) Соломон, Руссинович: "Внутреннее устройство Windows 2000"


> Привожу кусок кода, который в Windows 98 выполняется нормально,
> а в Windows XP - раз в 10 медленнее.


Чем определяется медленность ? Чему равно delay_time ?


 
Mefodiy   (2004-04-04 15:36) [4]

Приведенный код предназначен для создания эффекта "выплывающего текста" (с увеличением его размера).
     Даже, если задаю delay_time:=1, то в Windows XP текс выплывает еле-еле, а в Windows 98 - почти моментально. Если задаю delay_time:=20 или 30 , то в Windows 98 смотрится нормально, в Windows XP - надо сидеть и ждать.
     Для информации: комп с Windows 98 - имеет процессор 933 МГц, а с Windows XP - 2,4 ГГц. В том и другом случае выполняется только одна эта программа.



Страницы: 1 вся ветка

Текущий архив: 2004.04.18;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.042 c
14-1080010188
Думкин
2004-03-23 05:49
2004.04.18
С днем рождения! 23 марта.


3-1080116743
Ivan
2004-03-24 11:25
2004.04.18
Master table open operation failed


9-1066250875
X-RayMan
2003-10-16 00:47
2004.04.18
То ли я чего-то не понимаю, то ли одно из двух :)


1-1080734556
SisiusP
2004-03-31 16:02
2004.04.18
Перехват ShortCut через ApplicationEvents?


7-1075107885
Signed
2004-01-26 12:04
2004.04.18
COM порт