Название: QTableWidget ну оочень медленно Отправлено: SABROG от Май 09, 2007, 00:04 Сначала подготовил код для редактора таблицы на основе QTableView. Потом подумал зачем извращаться с "моделями", удалил код и переписал под QTableWidget. 2000 записей с построчной записью пишется секунд 15. Планируется выводить в будещм до 300000 записей. Но видимо с такими скоростями мне это не светит. Вижу, что народ рекомендует использовать в таких случаях model based таблицы. Опять чтоль переписывать все под QTableView :( ?
Есть какие-нибудь решения как ускорить вывод записей ? Планируется работа с большими объемами данных... добавлено спустя 5 часов 42 минуты: Разобрался в чем дело. Построчное добавление элементов в таблицу ну очень медленное, поэтому если надо добавить кучу элементов, то сначала надо узнать будущее количество строк и установить для QTableWidget это количество. Код:
Теперь заполнение таблицы на 2000 записей идет не 10 секунд, а 0.1. Значит 300 000 записей у меня смогут вывестись за 15 секунд. Надо будет пропробывать еще с моделью. Название: QTableWidget ну оочень медленно Отправлено: SABROG от Май 09, 2007, 19:04 Как и предполагалось, при переходе на model based таблицу я получил выйгрыш в скорости. Теперь 300 000 записей заносятся в таблицу за 5 секунд, против 13 секунд на Item based.
Название: QTableWidget ну оочень медленно Отправлено: Gryz от Май 09, 2007, 23:51 интересно, а выигрыш-то из-за чего? где узкое место в виджете? в профалере не смотрел?
Название: QTableWidget ну оочень медленно Отправлено: SABROG от Май 10, 2007, 10:02 Цитата: "Gryz" интересно, а выигрыш-то из-за чего? где узкое место в виджете? в профалере не смотрел? Знаю про профайлер в MSSQL, в Qt профайлера не видел. Ткни носом. Название: QTableWidget ну оочень медленно Отправлено: bigirbis от Май 10, 2007, 11:15 Выигрыш скорее всего получился по времени выделения памяти. В первом варианте надо было выделить память на все итемы - а это занимает много времени.
Со вторым вариантом надо быть тоже осторожным - если в базе курсор не двунаправленный, то в итоге памяти съестся столько же. Название: QTableWidget ну оочень медленно Отправлено: Gryz от Май 10, 2007, 11:41 Спрашивая про выигрыш имел в виду сравнение виджета и model/view
добавлено спустя 1 минуту: SABROG, я имел ввиду сторонний профайлер, например: http://www.automatedqa.com/products/aqtime/index.asp Название: QTableWidget ну оочень медленно Отправлено: bigirbis от Май 10, 2007, 12:17 To Gryz
Разберись как работает QSqlTableModel. Там данные подкачиваются по мере необходимости. Отсюда - малое потребление памяти и , как следствие, малое время инициализации. Название: QTableWidget ну оочень медленно Отправлено: Gryz от Май 10, 2007, 12:35 Цитата: "bigirbis" To Gryz Разберись как работает QSqlTableModel. Там данные подкачиваются по мере необходимости. Отсюда - малое потребление памяти и , как следствие, малое время инициализации. При чем тут это? Я спрашивал о: Цитировать Как и предполагалось, при переходе на model based таблицу я получил выйгрыш в скорости. Теперь 300 000 записей заносятся в таблицу за 5 секунд, против 13 секунд на Item based. т.е. о model/view вообще и сравнение с QTableWidget Название: QTableWidget ну оочень медленно Отправлено: SABROG от Май 10, 2007, 15:46 Объясните мне такую вещь. Вот сделал я селект на таблицу, где данных много.
С моделью QSqlTableModel с сервера придет только видимая часть, а по мере прокрутки ползунка остальные данные будут досылаться ? Т.е. если связь с сервером будет потеряна, то я уже не смогу сделать page down и посмотреть чего там внизу, т.к. доступ к курсору потеряется ? Название: QTableWidget ну оочень медленно Отправлено: VZ от Август 09, 2007, 17:04 Цитата: "SABROG" С моделью QSqlTableModel сТ.е. если связь с сервером будет потеряна, то я уже не смогу сделать page down и посмотреть чего там внизу, т.к. доступ к курсору потеряется ? типа того. но по смыслу - зачем жить твоему приложению если связь с сервером уже потеряна? |