Russian Qt Forum

Qt => Общие вопросы => Тема начата: RedDog от Июль 04, 2019, 20:37



Название: QTreeView Win vs Linux
Отправлено: RedDog от Июль 04, 2019, 20:37
Есть моделька, поверх которой навешано несколько разных проксей (колонки, группировка, сортировка, фильтрация), все это дело отображается в QTreeView,
В какой то момент в модель прилетает большое кол-во данных, ну к примеру 20-50 тыс элементов.
Данные прилетают по нажатию звездочки на одном из рутовых узлов. Уровень вложенности до 4-х.
В результате, линуксовая сборка рисует это все за 60-90сек, виндячья (10-ка МСВС 17) сборка рисовала 3,5часа(!) и я не дождался конца.
Обе сборка на Qt 5.8.0.
Все генерации айтемов дерева в ГУИ потоке.
В чем дело?


Название: Re: QTreeView Win vs Linux
Отправлено: qate от Июль 04, 2019, 22:21
20 тысяч уже имеет мало смысла для "обычного" пользователя и ждать даже 5 сек - это долго !
я бы посмотрел valgrind|callgrind
ну и версию qt пора обновить, с тех пор могла быть оптимизация


Название: Re: QTreeView Win vs Linux
Отправлено: Авварон от Июль 05, 2019, 00:11
большое кол-во данных

20-50 тыс элементов

 ;D ;D ;D

По сабжу, следует начать с qTreeView->setUniformRowHeights(true);


Название: Re: QTreeView Win vs Linux
Отправлено: RedDog от Июль 05, 2019, 09:40
TreeView->setUniformRowHeights(true);
включено.
ps: вопрос не как от задержки избавиться, а почему такая глобальная разница в двух осях при одинаковых условиях.
pps: теоретически догадываясь, что из за разности реализации гуи потоков.


Название: Re: QTreeView Win vs Linux
Отправлено: Racheengel от Июль 25, 2019, 17:54
может, винда тупо подвисла? :)


Название: Re: QTreeView Win vs Linux
Отправлено: RedDog от Июль 25, 2019, 19:32
может, винда тупо подвисла? :)
Исключено, на совсем разных тачках пробовали и по многу раз, поведение одинаковое, ну и остальные приложения работают в это время нормально.


Название: Re: QTreeView Win vs Linux
Отправлено: Fregloin от Июль 29, 2019, 11:15
Что в TaskManager-е - приложение жрет 100% CPU?
Как вариант (слабый) дело в видео-драйвере.

Попробуйте отключить модель от TableView. И посмотреть на результат.
Говорите что навешаны прокси - а они достаточно оптимизированы? Используете ли fetchRows?


Название: Re: QTreeView Win vs Linux
Отправлено: RedDog от Июль 29, 2019, 13:47
Что в TaskManager-е - приложение жрет 100% CPU?
Как вариант (слабый) дело в видео-драйвере.

Попробуйте отключить модель от TableView. И посмотреть на результат.
Говорите что навешаны прокси - а они достаточно оптимизированы? Используете ли fetchRows?
Приложение жрет одно ядро, прокси может и не сильно оптимально написаны, но код под разными осями один и тот же выполняется, но только разница в его производительности в сони раз различается.
Fetch используется до отрисовок.


Название: Re: QTreeView Win vs Linux
Отправлено: Fregloin от Июль 29, 2019, 15:53
Случайно данные не из БД/Файла берутся?


Название: Re: QTreeView Win vs Linux
Отправлено: RedDog от Июль 29, 2019, 16:15
Случайно данные не из БД/Файла берутся?
Они с сервера прилетают за полторы-две секунды.


Название: Re: QTreeView Win vs Linux
Отправлено: Авварон от Июль 29, 2019, 16:34
Что мешает взять и запустить профилировщик в студии? ???


Название: Re: QTreeView Win vs Linux
Отправлено: RedDog от Июль 29, 2019, 17:10
Что мешает взять и запустить профилировщик в студии? ???
Наверное ничего, кроме того, классов которые к моделям относятся с полсотни и у каждого надо найти куда вкорячить профайлер.


Название: Re: QTreeView Win vs Linux
Отправлено: Авварон от Июль 29, 2019, 17:14
Что мешает взять и запустить профилировщик в студии? ???
Наверное ничего, кроме того, классов которые к моделям относятся с полсотни и у каждого надо найти куда вкорячить профайлер.

Простите, шта? :o


Название: Re: QTreeView Win vs Linux
Отправлено: RedDog от Июль 29, 2019, 22:02
Простите, шта? :o
Я прост в вижуалстудии работал последний раз лет 10 назад, не вкурсах что там да как.
Под виндой только их компилятор используется.