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, 13:59
Сообщение
#2
|
Профессионал Группа: Участник Сообщений: 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
Сообщение
#3
|
Студент Группа: Новичок Сообщений: 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: ... как они собираються его на мобилах то использовать, там то процы поменее будут ... |
|
|
BRE |
12.12.2009, 14:47
Сообщение
#4
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
Попробуй вместо
использовать
напиши пару примеров, в которых на мобиле необходимо бинари в TextEdit совать Да тут скорее вопрос в том, для чего все делать так как делает автор. А если бинарный файл будет не 1Мб, а 100 или 1Гб? Будет читать весь файл, парсить и втыкать в редактор? Думаю при таком подходе, пользователи будут отказываться от использования такой программы еще до того как большой файл будет загружен в редактор.... Какой то дельфийский подход, очень удобно написать десять строк кода и получить результат, а потом удивляться почему медленно и требовать от разработчиков инструмента сделать быстро. 2 &-rey Читай кусок файла, который помещается на экран. Понимаю, что просто использовать QTextExit не получиться, зато твой виджет будет оптимизирован для твоей задачи. |
|
|
&-rey |
12.12.2009, 22:28
Сообщение
#5
|
Студент Группа: Новичок Сообщений: 15 Регистрация: 12.11.2009 Пользователь №: 1225 Спасибо сказали: 0 раз(а) Репутация: 0 |
напиши пару примеров, в которых на мобиле необходимо бинари в TextEdit совать если выведенное скопировать в текстовый файл то его вставка даст 22 сек.
т.е. если я захотел почитать к примеру "Война и Мир", то нужно будет подождать ... вопрос ведь не в том как обойтись, а в том почему приходится это делать ? вот к примеру вызов Copy из контекстного меню вставленного куска текста зависает на 22 сек, а это уже не преобразование текста а обработка существующего. Цитата Какой то дельфийский подход, очень удобно написать десять строк кода и получить результат, а потом удивляться почему медленно и требовать от разработчиков инструмента сделать быстро. удивляться приходиться как раз не в делфи, хотя речь шла о С++ Builder
те же пару строк кода, и все работает быстро, и вставка, и удаление, и копирование, и прочие возможности RichEdit я то наивно полагал, что библиотеки разрабатываються для ускорения процесса разработки, или нет ? Цитата Думаю при таком подходе, пользователи будут отказываться от использования такой программы еще до того как большой файл будет загружен в редактор.... и будут правы Цитата Читай кусок файла, который помещается на экран. Понимаю, что просто использовать QTextExit не получиться, зато твой виджет будет оптимизирован для твоей задачи. это примерно то же самое что массаж деревянной ноги, такие мысли были, но пока я их гоню от себя, надеясь на лучшее. да и подобные мысли были у человека ссылку на тему которого дал Litkevich Yuriy и как следует из прочтения не все так просто. А опыта у меня в програмировании мало, так что пока отложим. Программа в помощь, и тамже можно почитать всю тему - Чем большой текст показать? и цитаты от тель: Цитата Я пробовал QTextStream но на гигабайтах он работает гнусно медленно. Прямое чтение в несколько раз быстрее. это читал, но не очень понял что имелось ввиду под прямым чтением. Ссылки то ведут на редактор в delphi (какая гадость), но дело в том что в Builder то как раз проблем нет. или есть возможность совместить QT и RichEdit ? а как ? Да и скорость потока это не главная проблема тормозов. Время парсинга у меня занимает точно такое же как и с QString - 5062мс (debug), 3313мс (release). В релизной сборке весь текст добавляется 1 секунду в QPlainTextEdit. вот если верить Qtime Count of lines: 131072, elapsed: 10641 Strings appended. Elapsed: 21922 но реально получается на 15 сек больше, видимо доп затраты на отображение. Есть ли смысл написать в support ? |
|
|
Текстовая версия | Сейчас: 28.12.2024, 15:05 |