QTextEdit, тормозит |
Здравствуйте, гость ( Вход | Регистрация )
QTextEdit, тормозит |
&-rey |
12.12.2009, 0:55
Сообщение
#1
|
Студент Группа: Новичок Сообщений: 15 Регистрация: 12.11.2009 Пользователь №: 1225 Спасибо сказали: 0 раз(а) Репутация: 0 |
нужно преобразовать информацию из двоичного вида в текстовое представление.
пробовал: преобразовывать информацию по кусочкам, и выводить в QTextEdit - результата не дождался ... преобразовывать информацию в Qstring а по окончании выводить в QTextEdit append(string) - 50 сек вначале преобразуется в Qstring и добавляем в QtextStream, после заполнения обратно преобразуем к QString и выводим append(stream.readAll()) - 45 сек аналогичная задача на C++ Builder 2007 и RichEdit выполняется за 2 сек, используя TMemoryStream. возможно ли ускорить процесс, или норвежская медлительность не позволяет этого сделать ? |
|
|
SABROG |
12.12.2009, 9:30
Сообщение
#2
|
Профессионал Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: 34 |
Код и двоичную информацию в студию.
|
|
|
&-rey |
12.12.2009, 11:12
Сообщение
#3
|
Студент Группа: Новичок Сообщений: 15 Регистрация: 12.11.2009 Пользователь №: 1225 Спасибо сказали: 0 раз(а) Репутация: 0 |
Код и двоичную информацию в студию.
Прикрепленные файлы
|
|
|
&-rey |
12.12.2009, 13:26
Сообщение
#4
|
Студент Группа: Новичок Сообщений: 15 Регистрация: 12.11.2009 Пользователь №: 1225 Спасибо сказали: 0 раз(а) Репутация: 0 |
скачал версию 4.6.0
тот же код выполняется за 2.5 минуты, нет слов ... |
|
|
SABROG |
12.12.2009, 13:59
Сообщение
#5
|
Профессионал Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: 34 |
С QPlainTextEdit всё работает за 10 секунд на моей машине. С QTextEdit около 50 секунд. Сам файл парсится 4 секунды. Количество строк 131072, общее количество символов, которое помещается в textedit - 7077888, прибавим уникодность и получим где-то 6,75*2=13,5Мб
Добавление текста делал через QPlainTextEdit::appendPlainText(). |
|
|
&-rey |
12.12.2009, 14:20
Сообщение
#6
|
Студент Группа: Новичок Сообщений: 15 Регистрация: 12.11.2009 Пользователь №: 1225 Спасибо сказали: 0 раз(а) Репутация: 0 |
С QPlainTextEdit всё работает за 10 секунд на моей машине. С QTextEdit около 50 секунд. Сам файл парсится 4 секунды. Количество строк 131072, общее количество символов, которое помещается в textedit - 7077888, прибавим уникодность и получим где-то 6,75*2=13,5Мб Добавление текста делал через QPlainTextEdit::appendPlainText(). На моей это 22 сек, т.е. на половину быстрее, но мне нужны фичи TextEdit, а insertPlainText быстродействия не добавляет. Похоже тормозит собственно QString но другой возможности добавить текст не предусмотрено. Cтранно то, что с новой версией все еще хуже. PS: ... как они собираються его на мобилах то использовать, там то процы поменее будут ... |
|
|
Litkevich Yuriy |
12.12.2009, 14:25
Сообщение
#7
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
SABROG |
12.12.2009, 14:26
Сообщение
#8
|
Профессионал Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: 34 |
Я склоняюсь к тому, что тормозит QTextDocument, а не QString.
|
|
|
BRE |
12.12.2009, 14:47
Сообщение
#9
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
Попробуй вместо
использовать
напиши пару примеров, в которых на мобиле необходимо бинари в TextEdit совать Да тут скорее вопрос в том, для чего все делать так как делает автор. А если бинарный файл будет не 1Мб, а 100 или 1Гб? Будет читать весь файл, парсить и втыкать в редактор? Думаю при таком подходе, пользователи будут отказываться от использования такой программы еще до того как большой файл будет загружен в редактор.... Какой то дельфийский подход, очень удобно написать десять строк кода и получить результат, а потом удивляться почему медленно и требовать от разработчиков инструмента сделать быстро. 2 &-rey Читай кусок файла, который помещается на экран. Понимаю, что просто использовать QTextExit не получиться, зато твой виджет будет оптимизирован для твоей задачи. |
|
|
SABROG |
12.12.2009, 14:50
Сообщение
#10
|
Профессионал Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: 34 |
Попробуй вместо
использовать
А зачем флаг QIODevice::WriteOnly? Он же потом из потока читать будет. У меня с таким кодом не добавляет в textEdit вообще ничего несмотря на то, что размер QByteArray - 7062366. Да и скорость потока это не главная проблема тормозов. Время парсинга у меня занимает точно такое же как и с QString - 5062мс (debug), 3313мс (release). В релизной сборке весь текст добавляется 1 секунду в QPlainTextEdit. Сообщение отредактировал SABROG - 12.12.2009, 14:53 |
|
|
Текстовая версия | Сейчас: 26.12.2024, 17:30 |