crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> 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  


Цитата(SABROG @ 12.12.2009, 14:59) *
С 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  


Попробуй вместо
QTextStream Stream(new QString);

использовать
    QByteArray outBuf;
    outBuf.reserve( Length * 4 );
    QTextStream Stream( &outBuf, QIODevice::WriteOnly );


Цитата(Litkevich Yuriy @ 12.12.2009, 14:25) *
напиши пару примеров, в которых на мобиле необходимо бинари в TextEdit совать

Да тут скорее вопрос в том, для чего все делать так как делает автор.
А если бинарный файл будет не 1Мб, а 100 или 1Гб? Будет читать весь файл, парсить и втыкать в редактор?
Думаю при таком подходе, пользователи будут отказываться от использования такой программы еще до того как большой файл будет загружен в редактор....

Какой то дельфийский подход, очень удобно написать десять строк кода и получить результат, а потом удивляться почему медленно и требовать от разработчиков инструмента сделать быстро.

2 &-rey
Читай кусок файла, который помещается на экран. Понимаю, что просто использовать QTextExit не получиться, зато твой виджет будет оптимизирован для твоей задачи.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- &-rey   QTextEdit   12.12.2009, 0:55
- - SABROG   Код и двоичную информацию в студию.   12.12.2009, 9:30
|- - &-rey   Цитата(SABROG @ 12.12.2009, 10:30) Код и ...   12.12.2009, 11:12
|- - &-rey   скачал версию 4.6.0 тот же код выполняется за 2.5 ...   12.12.2009, 13:26
- - SABROG   С QPlainTextEdit всё работает за 10 секунд на моей...   12.12.2009, 13:59
|- - &-rey   Цитата(SABROG @ 12.12.2009, 14:59) С QPla...   12.12.2009, 14:20
|- - BRE   Попробуй вместо QTextStream Stream(new QString...   12.12.2009, 14:47
|- - SABROG   Цитата(BRE @ 12.12.2009, 14:26) Попробуй ...   12.12.2009, 14:50
||- - BRE   Цитата(SABROG @ 12.12.2009, 14:50) А заче...   12.12.2009, 14:55
|- - &-rey   Цитата(Litkevich Yuriy @ 12.12.2009, 14:2...   12.12.2009, 22:28
- - Litkevich Yuriy   Цитата(&-rey @ 12.12.2009, 17:20...   12.12.2009, 14:25
- - SABROG   Я склоняюсь к тому, что тормозит QTextDocument, а ...   12.12.2009, 14:26
- - SABROG   Цитата(BRE @ 12.12.2009, 14:55) А зачем и...   12.12.2009, 15:18
|- - BRE   Цитата(SABROG @ 12.12.2009, 15:18) Ладно,...   12.12.2009, 17:42
- - Litkevich Yuriy   Программа в помощь, и тамже можно почитать всю тем...   12.12.2009, 16:20
- - SABROG   Цитата(&-rey @ 12.12.2009, 22:28...   12.12.2009, 23:04
- - Litkevich Yuriy   Цитата(&-rey @ 13.12.2009, 1:28)...   13.12.2009, 4:42
- - &-rey   Цитата(Litkevich Yuriy @ 13.12.2009, 5:42...   13.12.2009, 19:40


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


5 чел. читают эту тему (гостей: 5, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 27.12.2024, 23:44