Как увеличить скорость загрузки? (QTextBrowser)

Модератор: Модераторы разделов

Аватара пользователя
Assuri
Сообщения: 678
Статус: #include <brain.h>
ОС: Fedora 12

Как увеличить скорость загрузки?

Сообщение Assuri »

Код: Выделить всё

query->exec(QString("SELECT * FROM %1 WHERE word LIKE \'%2%\' ORDER BY word").arg(tableName).arg(str));
while (query->next())
{
    i++;
    mainString+="(" + QString::number(i) + ")<a href=\'#" +
     query->record().value(0).toString() + "\'>" + query->record().value(0).toString() +"</a><br>";
}
textBrowser->setHtml(mainString);

Результаты тестов показали, что очень долго, по сравнению с другой частью кода работает следующая функция: setHtml(mainString).

Подскажите, пожалуйста, что мне сделать, чтобы строка быстрее добавлялась в QTextBrowser?
Спасибо сказали:
sergio
Сообщения: 436
Статус: Интересующийся новичок
ОС: Debian GNU/Linux 4 & 5

Re: Как увеличить скорость загрузки?

Сообщение sergio »

-DooM- писал(а):
21.10.2007 17:05
Подскажите, пожалуйста, что мне сделать, чтобы строка быстрее добавлялась в QTextBrowser?


А где вы там увидели добавление строки-то??? Вы весь текст собираете в целое, и целиком его и ставите, все строки сразу. Никаких добавлений не увидел.

Запрос SELECT * FROM %1 WHERE word LIKE \'%2%\' ORDER BY word вообще-то является издевательством над базой данных. Но раз вы говорите, что потери времени не здесь...

Какого размера там выборка? таблица? вопросы когда научимся задавать предоставляя внятную информацию? а не для экстрасенсов? :happy:
Debian GNU/Linux 4 -- AMD Athlon64 3000+ / Asus 7600GS -- Gnome
Debian GNU/Linux 5 -- Dell (Vostro) 500 (Celeron M560 / iGM965) -- Gnome
Спасибо сказали:
Аватара пользователя
eduard_pustobaev
Сообщения: 2629
Статус: Ленивец
ОС: Arch/Debian.

Re: Как увеличить скорость загрузки?

Сообщение eduard_pustobaev »

Большой объём текста полюбому долго грузится на виджет. Тут нужно думать, как бы его частями отображать.

sergio писал(а):
21.10.2007 23:06
Какого размера там выборка? таблица? вопросы когда научимся задавать предоставляя внятную информацию? а не для экстрасенсов? :happy:

Честно говоря не осилил смысл высказывания. Всё там понятно. С базой проблем нет, просто текст долго грузится в QTextBrowser. И размер выборки понятное дело немаленький, иначе должно шустро грузиться. Другое дело зачем отображать содержимое таблицы в виде html на QTextBrowser...
В дисгармонии со вселенной.
Спасибо сказали:
Аватара пользователя
Assuri
Сообщения: 678
Статус: #include <brain.h>
ОС: Fedora 12

Re: Как увеличить скорость загрузки?

Сообщение Assuri »

eduard_pustobaev писал(а):
22.10.2007 23:18
Большой объём текста полюбому долго грузится на виджет. Тут нужно думать, как бы его частями отображать.

Я вот это, можно сказать и спрашиваю:)
Другое дело зачем отображать содержимое таблицы в виде html на QTextBrowser...
Просто мне надо создать локальные ссылки на слова, я можно сказать делаю фильтр.Я сначала хотел QListWidget использовать, но думаю, что, это еще медленнее.
Спасибо сказали:
Аватара пользователя
eduard_pustobaev
Сообщения: 2629
Статус: Ленивец
ОС: Arch/Debian.

Re: Как увеличить скорость загрузки?

Сообщение eduard_pustobaev »

-DooM- писал(а):
23.10.2007 06:46
Я вот это, можно сказать и спрашиваю:)

Думаю нет. Я имел в виду не выводить всё на один QTextBrowser, сделать несколько текстовых документов, листать кнопкой next.
А выводить частями в принципе несложно, не зря же есть QTextCursor, QTextBlock.
Я сначала хотел QListWidget использовать, но думаю, что, это еще медленнее.

Не факт, особенно если модель-вид поюзать. Оно специально придумано для больших объёмов инфы.
В дисгармонии со вселенной.
Спасибо сказали:
Аватара пользователя
Assuri
Сообщения: 678
Статус: #include <brain.h>
ОС: Fedora 12

Re: Как увеличить скорость загрузки?

Сообщение Assuri »

eduard_pustobaev писал(а):
23.10.2007 14:28
Не факт, особенно если модель-вид поюзать. Оно специально придумано для больших объёмов инфы.

А что это за модель? Можно установить её, как опцию QListWidget ?
Спасибо сказали:
Аватара пользователя
Assuri
Сообщения: 678
Статус: #include <brain.h>
ОС: Fedora 12

Re: Как увеличить скорость загрузки?

Сообщение Assuri »

Попробовал с QListWidget и оказалось, что все работает намноооооого быстрее. Спасибо за совет.

Теперь у меня другая проблема:

Вот есть кусок функции, который отвечает за то, чтобы данные с файла перенести в БД, причем формат данного файла - sl. ( слово перевод \n), однако работает она довольно медленно. Подскажите, как мне увеличить скорость загрузки данные в БД?

Код:

mainString = stream.readAll(); list = mainString.split(" "); for ( int i = 0; i < list.count(); i++ ) if ( i % 2 == 0 ) { if ( i >= 2 && list.count() - i >= 1 ) { if ( list[i-1].split("\n").count() > 1 ) word = list[i-1].split("\n")[1]; trans = list[i].split("\n")[0]; } else if ( i == 0 ) { word = list[0]; trans = list[1].split("\n")[0]; } else if ( list.count() - i == 0 ) { word = list[list.count() - 1].split("\n")[1]; trans = list[list.count()]; } query->exec(QString("INSERT INTO %1(word,trans)" "VALUES(\"%2\",\"%3\")").arg(tableName).arg(word.simplified().toLower()).arg(trans)); if ( !query->isActive() ) centrWidget->setWarning(CentralWidget::Warning,tr("Database Error:") + query->lastError().text());
Спасибо сказали:
Аватара пользователя
eduard_pustobaev
Сообщения: 2629
Статус: Ленивец
ОС: Arch/Debian.

Re: Как увеличить скорость загрузки?

Сообщение eduard_pustobaev »

-DooM- писал(а):
24.10.2007 08:26
А что это за модель? Можно установить её, как опцию QListWidget ?

QSqlQueryModel(QSqlTableModel), QListWidget::setModel()
В дисгармонии со вселенной.
Спасибо сказали: