![]() |
|
|
![]()
|
|
| mosg |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 3.3.2008 Где: Moscow Репутация: 1 Всего: 1 |
Добрый день!
Проблема в следующем: есть html-файл с размером 6Mb, структура которого представляет из себя записи в виде (ссылка|пояснение) и т.д. на 50 тыс. строк ... Так вот не могу открыть этот документ в QTextDocument или QTextEdit! :( Точнее сказать - прога подвисает на целую эпоху, что не допустимо, и требуется время хотя бы 10-15 секунда на открытие этого документа. Понимаю что многое зависит от железа и загрузки машины, но дельфевые варианты открываются на этой же машине с тем же железом за доступные 10-15 секунд. Как вариант рассматриваю дополнение html-строк в виджет, но как реализовать пока не представляю. Пробую вот так:
Может быть кто сталкивался с такой проблемой? Заранее спасибо за советы! |
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Попробуй метод setMaximumBlockCount(). Не уверен, что поможет и, возможно, где-то в другом месте начнет притормаживать, но тролли советуют использовать его для отображения логов, которые обычно бывают довольно большими. Сам не пробывал, поэтому не знаю будет ли возможен скроллинг. Как воторой и третий вариант можно посмотреть в сторону QTextBrowser и QWebKit, если не требуется редактирование.
И скорее всего бесполезные советы: - setUpdatesEnabled(false); bigVisualChanges(); setUpdatesEnabled(true); - QTextCursor::beginEditBlock(); //вставка текста QTextCursor::endEditBlock(); |
|||
|
||||
| mosg |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 3.3.2008 Где: Moscow Репутация: 1 Всего: 1 |
Да, начал крутить с этим модулем, но результаты пока не оченб внушительные, вместо 10-12 секунд, код:
Крепко подвисает на ~ 1 минуту 45 секунд, т.е. работает в 7! раз медленнее :( Хотя конечно надо ещё покопаться и найти информацию по оптимизации вызова webView->load(), т.к. в демо-примерах "Demonstration"|"Browser" тот же файл грузится около 30 секунд, что немного радует. Да и варианты setUpdatesEnabled и подобных тут точно не канают. Все равно спасибо за советы. Если найду максимально быстрый путь загрузки, код кину сюда обязательно. |
|||
|
||||
| SABROG |
|
||||||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Вот еще что подумал. Дебаг версия обычно медленнее чем Релиз. Какую тестируешь ?
Попробуй подключить код профайлера, если используешь gcc. Надо будет добавить это: в .pro файл
Потом запускаешь дебаг версию и ждешь, когда медленный участок кода отработает до конца. Выходишь из программы и ищешь новый файлик gmon.out. Подсовываешь его профайлеру:
И получаешь нечто похожее:
Т.е. тут видно, что дольше всего выполняется цикл из 90 миллионов итерация, на втором месте - конструктор главной формы. Если узнаем где узкое место, то возможно сможем обойти его. |
||||||
|
|||||||
| mosg |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 3.3.2008 Где: Moscow Репутация: 1 Всего: 1 |
||||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 7 Всего: 162 |
Дебаг-версия может быть на порядок/полтора медленнее иногда, так что |
|||
|
||||
| ldir |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 13.11.2012 Репутация: 1 Всего: 1 |
Здравствуйте! Кто нибудь нашел решение? У меня та же проблема. Если кто знает способ побороть, хоть скажите куда глядеть.
|
|||
|
||||
| Jeka178RUS |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 85 Регистрация: 3.9.2012 Репутация: нет Всего: нет |
Для больших объемов данных сразу напрашивается поток (хотя как помню с гуями есть сложности) или читать по несколько строк, а потом вызывать processEvents руками, тем самым оживляя окно и обновляя progresBar с состоянием загрузки данных. Еще посмотри что тут пишут http://stackoverflow.com/questions/1386043...-thread-is-busy
Это сообщение отредактировал(а) Jeka178RUS - 30.4.2013, 12:31 |
|||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |