QTextDocument performance steigerung, schnelle ladezeit

Code-Schnippsel, oder Tipps und Tricks, die einem beim Programmieren mit Qt helfen können.
Antworten
patrik08
Beiträge: 746
Registriert: 27. Februar 2006 11:48
Wohnort: DE Freiburg

QTextDocument performance steigerung, schnelle ladezeit

Beitrag von patrik08 » 3. Oktober 2008 10:00

Sehr viel text oder viele seiten ist bei QT version 4.0 - 4.4 nie richtig angekommen.
Sogar 2 text-block auf 4-5 seiten verteilt ergibt eine sehr hohe ladezeit und dass scrollen ist muhsam da die paintdevice von QAbstractTextDocumentLayout * QTextDocument::documentLayout () jedesmal neu painten muss und immer wieder neu den umbruch ausrechnen muss.

Ich habe 2 test documenten im ordner
http://fop-miniscribus.googlecode.com/s ... tress_doc/
committet demo.html und demo.odt bei demo.odt hat sogar OpenOffice muhe es zu laden und braucht 3-5 sekunden bis was da ist. Wen das dokument bereist geladet ist geht das 2° mal etwas schneller fast die 1/2.
Man konte denken das OpenOffice ein dokument cache benutz das 2° mal im laden.

Nun komt Baldt QT version 4.5 und da aendert sich die QTextDocument welt gewaltig.

Ich suchte bereists anderswo , befor das ich QT version 4.5 sah.... ein weg um dokumente zu editieren oder vorlagen zu machen .
Ich schaute im KWord code von KDE ob es ein anderen weg gibt, da KWord gute performance hat. Aber zu meinem staunen portieren sie immer mehr auf QT, als kdlib fast nicht mehr notwendig sind.


Aber was ist nun anders bei QT version 4.5?

Um den unterchied selber zu beobachten lade:

1 - http://fop-miniscribus.googlecode.com/f ... t4.5r1.exe
( static gebaut mit mingw && qt 4.5 geht auch auf wine linux/mac )
2 - http://fop-miniscribus.googlecode.com/f ... dit4.1.exe
(shared gebaut mit mingw und qt 4.1 )

Den gleichen source der oeffentlich geladen werden kann bei svn:
http://fop-miniscribus.googlecode.com/s ... OO_Widged/
eigentlich nur den demo ordner, ist noch ein debugger drinnen da ich das OpenDocument format zum lesen gemacht habe...

1 und 2 koennen den OpenDocument format lesen aber nur 1 kann es auch schreiben da ja in qt4.5 enthalten, zum OpenDocument format lesen habe ich selber geschrieben , und ist sicher ab qt 4.0 moeglich ab dom xml.

Code: Alles auswählen


bool TextEdit::fileSaveAs()
{
    
    QString support;
    #if QT_VERSION >= 0x040500
    support = tr("ODF files (*.odt);;HTML-Files (*.htm *.html);;All Files (*)");
    #else
    support = tr("HTML-Files (*.htm *.html);;All Files (*)");
    #endif
    QString fn = QFileDialog::getSaveFileName(this, tr("Save as..."),
    QString(),support);
    
    
    
    if (fn.isEmpty())
        return false;
    setCurrentFileName(fn);
    return fileSave();
}



Nun ist also die QTextDocument performance fast gleich gesetzt mit OpenOffice oder KWrite von KDE ab qt version 4.5.

Also ein grosses lob and die QT developer die QTextDocument beduetlich schneller gemacht haben. Ich denke das Thomas Zander daran beteilig ist.
.........................
speack português italiano deutsch english castellà qt

Antworten