Главная страница
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.041 c
1-1080923074
art-east
2004-04-02 20:24
2004.04.18
Проблема с Z-Order


7-1076331450
Chery
2004-02-09 15:57
2004.04.18
Как узнать имя лок. диска и метку с кот. запускается приложение?


7-1076499402
ashnurov
2004-02-11 14:36
2004.04.18
XP


11-1061805311
Dimaxx
2003-08-25 13:55
2004.04.18
Байда с отловом сообщений системы!


9-1066175102
Кен
2003-10-15 03:45
2004.04.18
GLScene Как визуально добавить TGLODEDummy ? Почему то немогу