Помогите разобраться с одной проблемкой, а то уже мозги кипят......
В общем, проблема такая:
После тестирования некоторых моих программ на ХР(писал я их под 98 )
выяснилось, что они работают крайне медленно......
Путем долгих исканий, я пришел к следующиему феномену:
имеется вот такой код:
- Код: Выделить всё
do
ctm = GetTickCount
If ctm - ltm > mult Then
ltm = ctm
Fps=Fps+1
DoEvents
end if
Loop
Как видно, цикл почти пустой - подсчет ФПС и замедлитель.
Соответственно скорость он должен давать около 200 ФПС при переменной
mult=3. И несколько тысяч ФПС при mult=0.
В 98 все так и происходит. Но под ХР ОН ДАЕТ СКОРОСТЬ ~ 64 ФПС!!!!!!
Причем цикл без замедлителя дает нормальную скорость!
Логично было бы предположить, что дело в замедлителе, но ведь при mult равном нулю он не должен замедлять цикл вообще!!!!!
Правда, если поставить mult равным отрицательному числу, то цикл будет работать с правильной скоростью. Но тут другая проблема - скорость слишком велика, цикл необходимо замедлить! А замедлитель, как уже ясно из вышесказанного, при установке любого неотрицательного значения замедляет цикл не так как надо, а полностью снижает его скорость! До 60 фпс!!
Но все это еще пол беды. Я понял бы, если бы оказалось, что не работает только этот механизм замедления.
И я бы стал использовать Sleep. Правда, он не совсем подходит в ситуации, когда в цикле много инструкций - Sleep приостанавливает выполнение программы на указанный промежуток времени и не переходит к следующей строке, пока но не пройдет. В отличие от Sleep, код с GetTickCount просто не выполняет процедуры в IF'е, а переходит далее по программе, если время не прошло..........
Но я смирился бы и с этим, но проклятый цикл не хочет быстро работать ДАЖЕ ПРИ ЗАМЕНЕ МОЕГО ЗАМЕДЛИТЕЛЯ НА SLEEP!!!!!!!!!
И выдает тот же результат!
Я просто не знаю, что делать - эти семь строк кода портят мне жизнь!
Дело усугубляется тем, что у меня не ХР а 98, и тестировать мои попытки справится с этой проблемой довольно затруднительно. К счастю, Tarik помогает - у него ХР........
В общем, с этим феноменом связано и то, что моя игра(GoblinWars) под XP и 2k тормозит, вне зависимости от конфигурации компа!
Кто знает, как разобраться с этой проблемой - помогите плз!!!!