Перешел с Ubuntu 8.04 на 9.10. Соответственно поставил новый QT 4.5.2 и QTCreator.
При этом столкнулся с интересной проблемой. Есть программа (расчетная), использующая QT4, Qwt5, GSL.
На одной машине работает нормально, а на другой не работает(точнее срабатывет с большой задержкой) метод qApp->processEvents() , который вызывается в глухом цикле (итерации). Причем не работает собранная программа с любого из компьютера (линковка динамическая).
Софт на машине переставлял - не помогло. У кого есть мысль, как победить это.
QT4.5 и processEvents()
Модератор: Модераторы разделов
-
SergeyIT
- Сообщения: 82
- ОС: xUbuntu, MXlinux
QT4.5 и processEvents()
Извините, я все еще учусь
-
NickLion
- Сообщения: 3408
- Статус: аватар-невидимка
- ОС: openSUSE Tumbleweed x86_64
Re: QT4.5 и processEvents()
Насколько затратно переделать под многопоточное исполнение?
А так трудно что-то сказать, не сталкивался. Все что могу предложить - отладка с исходниками самого Qt4. Посмотреть, что именно тормозит внутри обработки сообщений. Возможно просто приходит много сообщений (откуда?). Не пробовали на этой же машине с LiveCD запускать (если возможно)? Может аппаратная проблема.
А так трудно что-то сказать, не сталкивался. Все что могу предложить - отладка с исходниками самого Qt4. Посмотреть, что именно тормозит внутри обработки сообщений. Возможно просто приходит много сообщений (откуда?). Не пробовали на этой же машине с LiveCD запускать (если возможно)? Может аппаратная проблема.
-
SergeyIT
- Сообщения: 82
- ОС: xUbuntu, MXlinux
Re: QT4.5 и processEvents()
В общем не хочется заниматься потокостроением, так как это не коммерческий продукт, а просто инструмент для расчета. Да и не особо напрягает подождать пару-тройку секунд (50-500 циклов) для остановки расчета. Просто никогда не сталкивался с подобным за много лет использования разных продуктов.
Посмотрю - может переставлю ОС. Основная у меня Убунту 8.04, а 9.10 поставил для пробы - скоро переходить на новую LTS (10.04) придется.
Кстати отличие 2-х компов небольшое, на котором работает P4 2.8 ГГц 512 Мб, а проблемный Селерон 2.1 ГГц 768 Мб.
Попробую может еще тестовую программку написать.
Может быть и аппаратная проблема - при включении компиза начинает тормозить и отрисовка (на каждой итерации выводятся данные и графики на qwtplot объект)
Извините, я все еще учусь
-
SergeyIT
- Сообщения: 82
- ОС: xUbuntu, MXlinux
Re: QT4.5 и processEvents()
Вроде понял немного в чем проблема. В цикле на каждой итерации делается перерисовка графиков в объектах QwtPlot. На одной машине видно из-за чего-то кривого очередь приложения полностью не выбирается, или просто не хватает скорости. Сделал отрисовку через 30 итераций - заработало. (Я конечно слегка обнаглел - у меня выполняется около 50 итераций в секунду.).
Извините, я все еще учусь
-
SergeyIT
- Сообщения: 82
- ОС: xUbuntu, MXlinux
Re: QT4.5 и processEvents()
Забавно. Поигрался с АТИ драйверами (у меня радеон 9600 про) - теперь не работет компиз. Зато тормоза в отрисовке пропали. То есть проблема, похоже, в драйверах для видео.
Извините, я все еще учусь