Russian Qt Forum

Qt => Qt Quick => Тема начата: Vamireh от Июнь 30, 2014, 21:01



Название: TableView и скорость работы
Отправлено: Vamireh от Июнь 30, 2014, 21:01
В свободное время перевожу проект на QML. Вот очередная проблема. Есть табличная модель, в QTableView летает с 5 млн. строк. Я перенаследовал модель на QAbstractListModel и загрузил в TableView. В итоге скроллинг лагает жутко уже на 5000 строках. Так и должно быть? Добавлял примерно так:
Код:
TableView {
    id: table
    model: rawModel
    anchors.fill:  parent
   
    TableViewColumn {
        role: "role1"
        title: "title1"
    }
   
    TableViewColumn {
        role: "role2"
        title: "title2"
    }
}


Название: Re: TableView и скорость работы
Отправлено: navrocky от Июль 02, 2014, 12:13
Quick компоненты еще сырые, вполне возможно что будет лагать. И вообще, десктопный интерфейс через Quick более лагающий (ресайз окна, как минимум), т.к. opengl.

Я пока до сих пор не вижу смысла в портировании десктопной проги (с тубарами, таблицами и пр.) под Quick. Quick интерфейс хорошо подходит в том случае, если нужно выпендриться с внешним видом, чтобы всё плавно ездило, аля мобилки, планшеты, терминалы.


Название: Re: TableView и скорость работы
Отправлено: GreatSnake от Июль 02, 2014, 17:25
QML реализован через QGraphicsScene/QGraphicsView, поэтому и тормоза.


Название: Re: TableView и скорость работы
Отправлено: Alex Custov от Июль 02, 2014, 18:44
это зависит от наличия аппаратного 3D ускорения в OpenGL. Если всё работает в софтвере - будет тормозить. Я когда-то тестировал табличку у себя, у меня в принципе нормально бегало на 10'000 записях, на 100'000 подлагивало, но не жёстко. При переходе в софтвер всё резко изменилось, "родной" C++ QTreeView был на порядок быстрее.


Название: Re: TableView и скорость работы
Отправлено: navrocky от Июль 02, 2014, 19:22
QML реализован через QGraphicsScene/QGraphicsView, поэтому и тормоза.

Это Quick1 так сделан. Quick2 совсем другое. Судя по тому, что топикстартер пишет про TableView, то используемая версия у него >= Qt 5.2 и Quick 2 версии соответственно.

Цитировать
это зависит от наличия аппаратного 3D ускорения в OpenGL. Если всё работает в софтвере - будет тормозить. Я когда-то тестировал табличку у себя, у меня в принципе нормально бегало на 10'000 записях, на 100'000 подлагивало, но не жёстко. При переходе в софтвер всё резко изменилось, "родной" C++ QTreeView был на порядок быстрее.

Не совсем понятно, что означает отсутствие аппаратного ускорения в OpenGL. Если речь идет о винде, то там дефолтный OpenGL v1 и Quick2 с ним работать просто не может. Если стоят дрова от производителя видеокарты, то OpenGL 100% аппаратный. Да еще есть вариант с ANGLE, который будет по определению медленнее чем OpenGL от производителя.

Если тестируется в Linux, то возможны самые различные варианты, полное отсутствие OpenGL, программная эмуляция разных видов, разной степени кривизны поддержка аппаратного ускорения.

В общем, маловато инфы для размышлений.


Название: Re: TableView и скорость работы
Отправлено: Vamireh от Июль 02, 2014, 20:43
Кстати, под Windows 7 на более слабом по всем статьям компе лагает чуть меньше, чем под топовым ноутом на Linux. Но все равно ад.
Я предполагал, что будут тормоза, но слишком часто от умных людей читал/слышал, что возможны тормоза только при парсинге *.qml, а потом один фиг чистый c++.


Название: Re: TableView и скорость работы
Отправлено: Vamireh от Июль 02, 2014, 20:46
чтобы всё плавно ездило

Ползунок скроллбара так плавно ездит, что вообще офигеть


Название: Re: TableView и скорость работы
Отправлено: Alex Custov от Июль 02, 2014, 20:56
Кстати, под Windows 7 на более слабом по всем статьям компе лагает чуть меньше, чем под топовым ноутом на Linux. Но все равно ад.
Я предполагал, что будут тормоза, но слишком часто от умных людей читал/слышал, что возможны тормоза только при парсинге *.qml, а потом один фиг чистый c++.

у тебя софтверная обработка. Видимо драйверы, которые дали бы аппаратное ускорение, у тебя не стоят


Название: Re: TableView и скорость работы
Отправлено: Vamireh от Июль 02, 2014, 20:58
И вот еще что. Я когда-то давно еще на Delphi писал велосипед типа TableGrid, так вот там шла обработка только тех строк, которые на экран помещаются, а прокрутка независимым скроллбаром реализована была. Я думал в Quick примерно также реализовано.


Название: Re: TableView и скорость работы
Отправлено: Vamireh от Июль 02, 2014, 20:59
Кстати, под Windows 7 на более слабом по всем статьям компе лагает чуть меньше, чем под топовым ноутом на Linux. Но все равно ад.
Я предполагал, что будут тормоза, но слишком часто от умных людей читал/слышал, что возможны тормоза только при парсинге *.qml, а потом один фиг чистый c++.

у тебя софтверная обработка. Видимо драйверы, которые дали бы аппаратное ускорение, у тебя не стоят

не не, nvidia 337 используется


Название: Re: TableView и скорость работы
Отправлено: Alex Custov от Июль 02, 2014, 20:59
Если тестируется в Linux, то возможны самые различные варианты, полное отсутствие OpenGL, программная эмуляция разных видов, разной степени кривизны поддержка аппаратного ускорения.

С полным отсутствием OpenGL всё это дело просто не запустится. С дефолтными дровами, многие из которых дают только аппаратно ускоренный 2d - будет тормозить (вероятно для Радеонов уже есть дефолтное нормальное 3d, не следил за этим делом). С полноценным (часто проприетарным) драйвером будет 3d ускорение и нормальная работа QML.


Название: Re: TableView и скорость работы
Отправлено: Alex Custov от Июль 02, 2014, 21:00
не не, nvidia 337 используется

а glxgears сколько FPS показывают? Запускай из консоли.


Название: Re: TableView и скорость работы
Отправлено: navrocky от Июль 02, 2014, 23:04
чтобы всё плавно ездило

Ползунок скроллбара так плавно ездит, что вообще офигеть

УМВР. У меня ноут с интеловской видяхой, все плавно, под линукс работает в два раза быстрее как парсинг QML, так и плавнее анимация по сравнению с виндой. Запускал также прогу на своем андроиде с ARM11 + Adreno200, скроллится тоже все плавно.

Дрова то ставил на невидию или на nouveau пускаешь?

2. ListView и производные от него, такие как TableView, именно так и сделаны - создают компоненты только для видимых строк. Поэтом можно создать модель с охулеардом строк и она будет нормально скроллироваться. Есть и обратная сторона, т.к. строки постоянно создаются и уничтожаются, это немного сказывается на плавности скроллинга.


Название: Re: TableView и скорость работы
Отправлено: Vamireh от Июль 02, 2014, 23:13
блин, vsync был включен. теперь FPS 2900-3000. Со скроллингом стало лучше. Но все таки даже на миллионе строк фактически скролл не работает, виснет на много секунд.


Название: Re: TableView и скорость работы
Отправлено: navrocky от Июль 02, 2014, 23:23
http://www.youtube.com/watch?v=_7GZYe3YlWw&feature=youtu.be

Тут у меня таблица может быть очень длинной, скроллируется довольно плавно.

Видео лагает только после конвертации ютубом  :(


Название: Re: TableView и скорость работы
Отправлено: Bepec от Июль 02, 2014, 23:48
to navrocky: если уж выкладываешь видео, сделай его публичным ^.^


Название: Re: TableView и скорость работы
Отправлено: navrocky от Июль 03, 2014, 08:07
to navrocky: если уж выкладываешь видео, сделай его публичным ^.^

Да уж  :D Сделал. http://youtu.be/_7GZYe3YlWw