Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.02.2018, 08:53   #11
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

Я лет 15 назад провёл детальное исследования и выяснил, что виндовые функции времени Sleep() и GetTickCount() на малых интервалах дают ацкую погрешность - до 1600% (тыщашестьсот!).

Решение было найдено и работает по сей день прекрасно. Использую во всех своих прогах. Могу поделиться со всеми желающими.
-------------
Сейчас я раскопал в архиве тестовое приложение и с удивлением обнаружил, что в Windows 10x64 функция Sleep() таки стала работать почти исправно, мелкософт доработала напильником. Но если Sleep() оставлять в проге, то обратной совместимости настаёт кирдык.

Вложения
Тип файла: 7z timing.7z (852.8 Кб, 20 просмотров)
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...

Последний раз редактировалось min@y™; 07.02.2018 в 10:08.
min@y™ вне форума Ответить с цитированием
Старый 07.02.2018, 11:15   #12
PAG
Пользователь
 
Регистрация: 07.04.2016
Сообщений: 16
По умолчанию

Спасибо всем кто принял участие в решении проблемы.
В моей миллисекундной временной шкале WinXP вполне соответствует системе реального времени. Но Win7 - никаким боком.
Проблема решилась вызовом QueryPerformanceCounter и организацией собственного подсчета времени.
PAG вне форума Ответить с цитированием
Старый 09.02.2018, 11:39   #13
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,792
По умолчанию

в архиве у вас только EXE-шник, а исходника с решением проблемы нет, что вы там накопали и до какой сути дошли? сам бы код увидеть...
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Старый 09.02.2018, 11:49   #14
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

Цитата:
Сообщение от NetSpace Посмотреть сообщение
в архиве у вас только EXE-шник, а исходника с решением проблемы нет, что вы там накопали и до какой сути дошли? сам бы код увидеть...
Да тот же механизЬм, основанный на QueryPerformanceXXX().
Исходники зашиты внутрь exe и извлекаются по Shift+F11. У меня это делается автоматически и уже довольно давно.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 09.02.2018, 12:14   #15
kvitaliy
Участник клуба
 
Регистрация: 17.05.2011
Сообщений: 1,660
По умолчанию

Цитата:
Сообщение от PAG Посмотреть сообщение
Но Win7 - никаким боком.
Наверно все же не только винда, но и конкретное железо вносит свои "коррективы"
Сейчас проверил на программе min@y™, система WIN7 x64, у меня Sleep() работает миллисекунда в миллисекунду до самой 1 (кстати, отрицательные интервалы программе не полезны ), а вот GetTickCount() меньше 16 не показывает вообще, и общая точность дрянь.
kvitaliy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задать временной интервал в php grundik1 PHP 2 25.04.2015 16:58
Как правильно выдержать html и php. Predator199 PHP 14 07.03.2012 21:11
Временной интервал MaRKer.nsk Общие вопросы C/C++ 2 03.11.2010 10:04
Как получить точный таймер WaxeP Gamedev - cоздание игр: Unity, OpenGL, DirectX 5 25.07.2010 18:25
Как реализовать точный таймер (до мксек) evgengold Общие вопросы Delphi 11 03.03.2009 11:41