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, 15:18
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


Цитата(BRE @ 12.12.2009, 14:55) *
А зачем из него читать, все данные в QByteArray.


Ладно, а зачем ты тогда в свой код вставил вообще QTextStream :blink: ?

Тем не менее твое предложение наоборот дало тормоза, парсинг файла стал выполняться на 1 секунду дольше:

#include <QtGui/QApplication>
#if 0
#include <QtGui/QPlainTextEdit>
typedef QPlainTextEdit TextEdit;
#else
#include <QtGui/QTextEdit>
typedef QTextEdit TextEdit;
#endif

#include <QtCore/QtGlobal>
#include <QtCore/QtDebug>
#include <QtCore/QTime>

#include <QtCore/QFile>
#include <QtCore/QFileInfo>
#include <QtCore/QTextStream>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    TextEdit textEdit;
    textEdit.setWordWrapMode(QTextOption::NoWrap);
    textEdit.setUndoRedoEnabled(false);
    QString filename("../test.bin");
    QFile file(filename);
    if (!file.open(QIODevice::ReadOnly)) return 1;
    qint64 length = file.size();
    quint8 *ptr = (quint8 *)file.map(0, length);

    if (QFileInfo(filename).suffix().endsWith("bin", Qt::CaseInsensitive)) {
        QByteArray buffer;
        buffer.reserve(length * 4);
        int counter = 0;
        QTime t;
        t.start();
        for (qint64 i = 0; i < length; ++i) {
            if (!(i&0x0F)) {
                buffer.append("\n");
                counter++;
            }
            if (!(i%16)) {
                buffer.append(QString::number(i/16, 16).toUpper().rightJustified(5,'0')); // номер строки в Hex
            }
            buffer.append(" " + QString::number(*ptr++, 16).toUpper().rightJustified(2,'0')); // значение байта в Hex
        }
        qDebug("Count of lines: %d, elapsed: %d", counter, t.elapsed());
        t.start();
        textEdit.textCursor().beginEditBlock();
        textEdit.textCursor().insertText(buffer);
        textEdit.textCursor().endEditBlock();
        qDebug("Strings appended. Elapsed: %d", t.elapsed());
    }
    file.close();

    textEdit.show();
    return app.exec();
}


Хочу обратить внимание на этот кусок кода:
        qDebug("Strings appended. Elapsed: %d", t.elapsed());
    }
    file.close();

    textEdit.show();


Добавление в textEdit происходит 1 секунду, а вот после textEdit.show() начинается всё веселье.

Сообщение отредактировал SABROG - 12.12.2009, 15:20
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- &-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


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


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




RSS Текстовая версия Сейчас: 28.12.2024, 14:43