Timer vs. GetTickCount

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
PSV
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 154
Зарегистрирован: 29.01.2002 (Вт) 12:30
Откуда: Россия

Timer vs. GetTickCount

Сообщение PSV » 02.10.2004 (Сб) 16:23

Хаюшки!

В коде, написаном по мотивам http://www.smsoft.ru/ru/vbwait.htm, хотелось бы использовать для засечения ОЧЕНЬ коротких интервалов Timer (VB), а не возиться с GetTickCount (API). Достаточно разрешения системного таймера, но не меньше. Пробовал сравнивать Timer и GetTickCount - похоже обе используют системный таймер, с той лишь разницей что Timer генерирует нечто вида 0.0011782 с, тогда как GetTickCount при тех же условиях 0.001 c, 0.002 c и т.д.

Но на всякий случай хочется уточнить:
1. Timer и GetTickCount имеют одинаковую разрешающую способность, задаваемую системным таймером?
2. Не имеет ли применение Timer по сравнению GetTickCount каких либо недостатков в случае когда в комбинации c MsgWaitForMultipleObjects (API) требуется сделать ожидание в течении интервалов <100мс c реакцией на события.

P.S.
То что GetTickCount сбрасывается реже не имеет значения.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Re: Timer vs. GetTickCount

Сообщение tyomitch » 02.10.2004 (Сб) 16:59

PSV писал(а):Пробовал сравнивать Timer и GetTickCount - похоже обе используют системный таймер, с той лишь разницей что Timer генерирует нечто вида 0.0011782 с, тогда как GetTickCount при тех же условиях 0.001 c, 0.002 c и т.д.

Но на всякий случай хочется уточнить:
1. Timer и GetTickCount имеют одинаковую разрешающую способность, задаваемую системным таймером?

Да (а именно 55мс)
PSV писал(а):2. Не имеет ли применение Timer по сравнению GetTickCount каких либо недостатков в случае когда в комбинации c MsgWaitForMultipleObjects (API) требуется сделать ожидание в течении интервалов <100мс c реакцией на события.

Недостаточно информации, чтобы решить. Какие именно "недостатки" тебя интересует, и что именно происходит в твоей проге?
Изображение

PSV
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 154
Зарегистрирован: 29.01.2002 (Вт) 12:30
Откуда: Россия

Re: Timer vs. GetTickCount

Сообщение PSV » 02.10.2004 (Сб) 17:50

tyomitch писал(а):Да (а именно 55мс)

Если верить MSDN по GetTickCount и GetSystemTimeAdjustment (API), то на PII400 под NT все таки не 55мс, а где то 10мс, хотя под Win9x ...
tyomitch писал(а):Недостаточно информации, чтобы решить. Какие именно "недостатки" тебя интересует, и что именно происходит в твоей проге?

Чаще всего при коммуникациях через COM-порт и через TCP-IP мне необходимо делать ожидание типа "пока не пришло...", "пока не отправлено..." при этом не прекращая обработку событий. Делать это через таймеры (OCX) не очень удобно. Поэтому я пользуюсь MsgWaitForMultipleObjects (API) почти так как это описано в http://www.smsoft.ru/ru/vbwait.htm

PATRIOT_kz
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 105
Зарегистрирован: 14.09.2004 (Вт) 21:09
Откуда: Павлодар, Казахстан

Сообщение PATRIOT_kz » 02.10.2004 (Сб) 19:00

ХеХ.

Нашли что сравнить!
Лучше бы вы сравнивали коннекты!
Народная мудрость: "на медленной скорости, быстрая бошка,"
"а на высокой, фиг от моржа".
Press any key . . .

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 03.10.2004 (Вс) 13:20

Ну если всё требуется высокоточный таймер, то это queryperformancecounter.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

PSV
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 154
Зарегистрирован: 29.01.2002 (Вт) 12:30
Откуда: Россия

Сообщение PSV » 04.10.2004 (Пн) 8:28

GSerg писал(а):Ну если всё требуется высокоточный таймер, то это queryperformancecounter.


В использовании мультимидийного таймер а необходимости пока нет (да и проблем с ним прибавится) - достаточно и системного тайиера, поэтому и вопрос только в различиях Timer и GetTickCount, если таковые есть. Что касается быстрой реакции MsgWaitForMultipleObjects итак выйдет из цикла ожидания при поступлении события и если данное событие будет по приему или отправке то реакция последует незамедлительно. Таким образом Timer и GetTickCount у меня используются для:
1. Отслеживания тайм-аутов (для COM-порта это обычно 500мс, для TCP-IP в условиях локалки еще не определился, но наверное не менее 100мс).
2. Задержек (для COM-порта это 100мс, для TCP-IP не нужны).

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 04.10.2004 (Пн) 11:44

PSV, в таком случае разницы имхо нету. Померяй по скорости, что из них быстрее, - я думаю, Timer.
Изображение

PSV
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 154
Зарегистрирован: 29.01.2002 (Вт) 12:30
Откуда: Россия

Сообщение PSV » 05.10.2004 (Вт) 12:10

tyomitch писал(а):PSV, в таком случае разницы имхо нету. Померяй по скорости, что из них быстрее, - я думаю, Timer.


Ну вроде одинаковое быстродействие. Я вот только про другую весчь забыл - если MsgWaitForMultipleObjects вызовется после того как в очереди сообщений будет сообщение о том что байт пришел/байт отправлен она ж зараза в течении всего тайм-аута или до первого события ждать будет...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 05.10.2004 (Вт) 21:21

Ну так проверяй этот байт перед вызовом MsgWaitForMultipleObjects :-)
Изображение


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6

    TopList  
cron