Russian Qt Forum
Ноябрь 23, 2024, 11:52 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: TableView и скорость работы  (Прочитано 9152 раз)
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"
    }
}
Записан
navrocky
Moderator
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #1 : Июль 02, 2014, 12:13 »

Quick компоненты еще сырые, вполне возможно что будет лагать. И вообще, десктопный интерфейс через Quick более лагающий (ресайз окна, как минимум), т.к. opengl.

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

Гугль в помощь
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #2 : Июль 02, 2014, 17:25 »

QML реализован через QGraphicsScene/QGraphicsView, поэтому и тормоза.
Записан

Qt 5.11/4.8.7 (X11/Win)
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #3 : Июль 02, 2014, 18:44 »

это зависит от наличия аппаратного 3D ускорения в OpenGL. Если всё работает в софтвере - будет тормозить. Я когда-то тестировал табличку у себя, у меня в принципе нормально бегало на 10'000 записях, на 100'000 подлагивало, но не жёстко. При переходе в софтвер всё резко изменилось, "родной" C++ QTreeView был на порядок быстрее.
« Последнее редактирование: Июль 02, 2014, 18:48 от Alex Custov » Записан
navrocky
Moderator
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #4 : Июль 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, программная эмуляция разных видов, разной степени кривизны поддержка аппаратного ускорения.

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

Гугль в помощь
Vamireh
Гость
« Ответ #5 : Июль 02, 2014, 20:43 »

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

чтобы всё плавно ездило

Ползунок скроллбара так плавно ездит, что вообще офигеть
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #7 : Июль 02, 2014, 20:56 »

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

у тебя софтверная обработка. Видимо драйверы, которые дали бы аппаратное ускорение, у тебя не стоят
Записан
Vamireh
Гость
« Ответ #8 : Июль 02, 2014, 20:58 »

И вот еще что. Я когда-то давно еще на Delphi писал велосипед типа TableGrid, так вот там шла обработка только тех строк, которые на экран помещаются, а прокрутка независимым скроллбаром реализована была. Я думал в Quick примерно также реализовано.
Записан
Vamireh
Гость
« Ответ #9 : Июль 02, 2014, 20:59 »

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

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

не не, nvidia 337 используется
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #10 : Июль 02, 2014, 20:59 »

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

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

Сообщений: 2063


Просмотр профиля
« Ответ #11 : Июль 02, 2014, 21:00 »

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

а glxgears сколько FPS показывают? Запускай из консоли.
Записан
navrocky
Moderator
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #12 : Июль 02, 2014, 23:04 »

чтобы всё плавно ездило

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

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

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

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

Гугль в помощь
Vamireh
Гость
« Ответ #13 : Июль 02, 2014, 23:13 »

блин, vsync был включен. теперь FPS 2900-3000. Со скроллингом стало лучше. Но все таки даже на миллионе строк фактически скролл не работает, виснет на много секунд.
Записан
navrocky
Moderator
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #14 : Июль 02, 2014, 23:23 »

http://www.youtube.com/watch?v=_7GZYe3YlWw&feature=youtu.be

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

Видео лагает только после конвертации ютубом  Грустный
Записан

Гугль в помощь
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.055 секунд. Запросов: 24.