LINUX.ORG.RU

портирование проекта с qwt5-qt3 на qwt6-qt4

 ,


0

3

Собственно переписываю следы мамонта на нову версию qwt и кьют. Проблема в том, что на 2д графике отображаются очень много данных. График из где-то 1е5 значений (иногда больше, доходит до 2е5) нужно отображать быстро хотя бы раз в полсекунды. В старой версии под qwt5-qt3 показывает очень быстро и не заикается. Под qwt6-qt4 работает крайне медленно, тормозит (секунд 10 ждать надо, что бы перерисовало). профайлер показал, что это именно рисование, но я пока в детали не вникал.

Собственно из изменений кода только замена QwtPlot::setRawCurveData на создание QwtPlotCurve и вызов setRawSamples для неё. Пытался методом тыка переключать разные флаги canvas и кривых, но ощутимого прироста скорости не обнаружил.

между qwt6.0 и qwt6.1-rc3 относительно описаной проблемы разницы не увидел.

Может кто уже с такой проблемой сталкивался и знает как её решить? Как отобразить ~1е5 точек на qwtplotcurve без тормозов?

Спасибо.

★★★★

Последнее исправление: nanoolinux (всего исправлений: 1)

В твоих следах мамонта случайно нет кода, отправлющего на каждый чих update() на всю площадь виджета?

Ну и стандартный совет: используй профайлер(ы)

annulen ★★★★★
()
Ответ на: комментарий от annulen

Та вроде нет. Симптомы такие: все виснет на секунд 10ть, морда ни на какие действия не реагирует, даже кнопочки не нажимаются. Очевидно какой-то код в треде гуи отрабатывает. Профайлером я уже смотрел, но не сильно внимательно. Только для того что бы убедится, что это не подготовка того, что будет отображатся, там просто много данных молотить надо нетривиальным способом, тот код мной был переписан чуток.

В общем завтра буду на работе, продолжу мучить профайлер.

nanoolinux ★★★★
() автор топика
Ответ на: комментарий от nanoolinux

А циклов типа while(!x) processEvents() нет случайно?

annulen ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.