Название: 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 назад, не вкурсах что там да как.Под виндой только их компилятор используется. |