Обновление QGLWidget - событие или сигнал / слот? - PullRequest
0 голосов
/ 10 сентября 2011

Мне нужно прошить некоторые изображения с очень точным временем (порядка миллисекунд), для которого я разработал подкласс QGLwidget. Изображения загружаются как текстуры при инициализации. Я использую экземпляр QTimer, чтобы изменить отображаемое изображение. Сигнал timeOut таймера подключается к timeOutSlot, который выполняет некоторый файловый ввод-вывод, а затем вызывает updateGL ().

Хотя я понимаю, что обработчики событий предназначены для внешних событий, а сигнал / слот - для связи внутри GUI, я мог бы также реализовать это как обработчик timeOutEvent.

Есть ли разница в производительности между ними? Мне важно любое снижение производительности выше 2-3 миллисекунд (аппаратное обеспечение среднее, скажем, Intel Core 2 Duo T5700 с видеокартой nVidia 8600M GT).

Ответы [ 2 ]

1 голос
/ 10 сентября 2011

Сигналы и слоты примерно в 10 раз медленнее, чем обычные вызовы функций. Но они определенно не настолько медленны, чтобы обрабатывать их за миллисекунды. Время обработки одного сигнала составляет около 0,001 мс ( см. Слайд 27 ).

Вы говорите, что вам требуется очень точное время, знаете ли вы, как частота обновления дисплея влияет на рисунок? Изображение (обычно) рисуется с частотой обновления 60 Гц. Время между изображениями составляет 16,7 мс, поэтому это максимальная точность, которую вы можете получить.

0 голосов
/ 10 сентября 2011

Я бы сказал, сигнал / слот, потому что события добавляются в очередь событий, где Qt часто выполняет оптимизацию вызовов и упорядочение важности, тогда как s / s выполняются немедленно - хотя и медленнее, чем прямые вызовы.

...