Я пишу что-то типа продвинутого текстового редактора, мне нужно выделять некоторые слова и предложения особым цветом.
Программа хранит слова как отдельные объекты, а потом из них генерирует текст, однако затраты на вызов textCursor.insertText для каждого слова очень накладны для процессора, по непонятной причине. Написал пример, на котором очевидно, что вызов insertText 1000 раз с маленьким текстом будет в 10 раз дольше, чем вызов его же 100 раз с текстом, в 10 раз большим. Хотя итог одинаковый...
void insertTextExample(){
QTextEdit* pTextEdit1 = new QTextEdit();
QTextCursor textCursor = pTextEdit1->textCursor();
int i;
QTime timeInsertText; timeInsertText.start();
for(i=0;i<1000;i++){
textCursor.insertText("Text");
}
qDebug() << "Time insert small text x1000 = " << timeInsertText.elapsed();
pTextEdit1->clear();
QTime timeInsertText2; timeInsertText2.start();
for(i=0;i<100;i++){
textCursor.insertText("TextTextTextTextTextTextTextTextTextText");
}
qDebug() << "Time insert big text x100 = " << timeInsertText2.elapsed();
pTextEdit1->show();
}
int main(int argc, char* argv[]){
QApplication app(argc, argv);
insertTextExample();
return app.exec();
}
Вывод-
Time insert small text x1000 = 60
Time insert big text x100 = 6