timerEvent() vs. QTimer + сигналы и слоты |
Здравствуйте, гость ( Вход | Регистрация )
timerEvent() vs. QTimer + сигналы и слоты |
registr |
9.10.2011, 17:43
Сообщение
#1
|
Участник Группа: Участник Сообщений: 115 Регистрация: 16.11.2009 Пользователь №: 1234 Спасибо сказали: 8 раз(а) Репутация: 1 |
Доброго времени суток. Хочу поделиться с сообществом своими исследованиями о скорости выполнения timerEvent() и QTimer + сигналы и слоты. Итак понятно, что событие таймера должно выполняться быстрее, чем сигналы и слоты, так как при сигналах и слотах затрачивается время на отлавливание сигнала. Но кто может сказать, какова их численная характеристика? Вот это и должна продемонстировать моя программа.
Суть программы. В ней два QLineEdit, в которые будет выводится время в миллисекундах, затраченное на выполнение некоторых процедур. В первую линию будет выводится время, затраченное на работу QTimer + сигналы и слоты, во вторую линию -- время на события таймера. Нажимая кнопку Start, мы запускаем сравнение и ждем результаты. Дополнительными параметрами в программе являются count - счетчик - он будет просто считать до определенного значения и, когда оно наступит, запишет время исполнения, остановит таймер и выдаст результат; другой параметр есть milliseconds - период таймера в миллисекндах. Сравнение производил по двум характеристикам (OS Windows XP, Intel Core2 6300 1.86GHz) 1) Выдерживают ли установленный период timerEvent() и QTimer 2) Насколько быстрее timerEvent(), чем QTimer Получены следующие результаты: +) Период таймера = 10 миллисекундам. timerEvent() ровно выдерживает установленный интервал, QTimer иногда чуть-чуть опаздывает. +) Период таймера = 5 миллисекундам. timerEvent() ровно выдерживает установленный интервал, QTimer всегда чуть опаздывает. +) Период таймера = 2 миллисекундам. timerEvent() чуть запаздывает и немного не выдерживает установленный интервал. QTimer заметно опаздывает. +) Период таймера = 1 миллисекунда. timerEvent() чуть (!) чаще опережает и немного не выдерживает установленный интервал. QTimer заметно опаздывает от 25% до 40%. Точные числа не привел специально. Предлагаю вам самим проверить progtime.h
progtime.cpp
main.cpp
PS Цитировать Qt Assistant для меня не нужно Сообщение отредактировал registr - 10.10.2011, 14:11 |
|
|
Abesh |
11.10.2011, 11:06
Сообщение
#2
|
Студент Группа: Новичок Сообщений: 13 Регистрация: 4.6.2010 Пользователь №: 1780 Спасибо сказали: 2 раз(а) Репутация: 0 |
Не стоит ожидать, что таймер будет корректно работать на интервале 1-2 миллисекунды. Ни Linux ни Windows не являются ОС реального времени, в большей степени это касается виндов. Там задержки в 1-2 миллисекунды - норма.
|
|
|
wiz29 |
11.10.2011, 11:57
Сообщение
#3
|
Старейший участник Группа: Участник Сообщений: 600 Регистрация: 7.7.2010 Из: Санкт-Петербург Пользователь №: 1866 Спасибо сказали: 94 раз(а) Репутация: 12 |
данный пример не отражает реального ничего, советую прочитать эту тему а после делать какие то выводы относительно интервалов и времен.
|
|
|
Текстовая версия | Сейчас: 28.1.2025, 15:49 |