[WICHTIG] Performanceprobleme mit QTextEdit...

Alles rund um die Programmierung mit Qt
Antworten
Alci
Beiträge: 70
Registriert: 24. März 2006 23:34

[WICHTIG] Performanceprobleme mit QTextEdit...

Beitrag von Alci »

Hallo,

wie es der Titel schon sagt, geht es um starke Performanceprobleme mit QTextEdit. Mein aktuelles Projekt ist eine C++-IDE (vielleicht) mit QT-Integration. Zum editieren von Texten verwende ich QTextEdit.

Aber langsam stellt sich raus, dass QTextEdit wirklich langsam ist wenn es darum geht große Textmengen zu laden und zu editieren. Da der Editor ein sehr wichtiger Bestandteil der IDE ist, kann ich diese Performanceprobleme nicht ignorieren.

Im schlimmsten Fall würde ich sogar auf eine andere GUI-Lib wechseln, was ich aber nun wirklich nicht möchte. Deswegen brauche ich eure Hilfe.

Kann man dieses Problem irgendwie in den Griff kriegen?
Ich habe schon QT 4.1.2 installiert, aber da hat sich immer noch nichts getan.

Ich habe das Gefühl, dass bei jeder kleinen Änderung in der QTextEdit das gesamte Control neugezeichnet wird, oder irre ich mich da? Man braucht ja nur den Abschnitt zeichnen, den der User auch wirklich sieht. Oder ist der Grund ein anderer?

Solange ich keine vernüftige Lösung habe, kann ich das Projekt nicht fortsetzen.

MfG, Alci.
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

[Vermutung]
AutoFormatting ist an.Dann dürfte immer der komplette Text geparst werden.
[/Vermutung]
Alci
Beiträge: 70
Registriert: 24. März 2006 23:34

Beitrag von Alci »

Aus der Doku:
The default is AutoNone

Ist also ausgeschaltet.
Eltharion
Beiträge: 74
Registriert: 4. Mai 2006 14:42
Wohnort: Magdeburg
Kontaktdaten:

Beitrag von Eltharion »

Hallo. Darf man fragen, ob Du mittlerweile eine Lösung gefunden hast? Ich habe das gleiche Problem hier. Wobei selbst wenn das QTextEdit nicht neu gezeichnet wird (also beim idlen der App) die CPU-Last oben bleibt (Qt 4.1.3).

E*
Alci
Beiträge: 70
Registriert: 24. März 2006 23:34

Beitrag von Alci »

Hi, natürlich darfst du fragen. Aber leider hab' ich nichts gefunden. Ich bin dabei, eine eigene Implementierung zu schreiben, wobei ich da schon lange nichts mehr dran gemacht habe. Aber werde demnächst mal wieder weitermachen, da eine TextEdit für eines meiner Projekte sehr wichtig ist.

Zu deinem Problem im Idel-Modus: Dieses Problem hatte ich nicht, aber damals hatte ich auch eine andere Qt-Version verwendet (4.1.0, glaub' ich).

Bei www.trolltech.com gibt es doch irgendwo einen Bereich, wo man Verbesserungsvorschläge für Qt machen kann, oder? Ich wäre aufjedenfall dafür, dass man das dort erwähnen sollte. Denn die QTextEdit weißt wirklich eine misse Performance auf (zumindest unter Windows, auf anderen Plattformen hab' ich's nicht getestet).
MfG, Alci.

Aktuelle Projekte:
FModPlayer: Audio-Player auf Basis von FModEx
Epp.org: C++-IDE mit MinGW-Compiler

Entwickelt wird unter anderem mit Qt 4.1.4
Alci
Beiträge: 70
Registriert: 24. März 2006 23:34

Beitrag von Alci »

Ich habe mal trolltech eine E-Mail bezüglich dem QTextEdit-Control und desen Performance geschrieben. Hier der Kernteil der Mail:
>> The performance of you QTextEdit-Control is (under some conditions)
>> really bad under a MS Windows OS (there are some Posts on
>> www.qtforum.de). I figured out, that you can load a text with 3000
>> lines
>> of text and the performance may be OK, but otherwise it is also
>> possible, that when you only load a text with 2000 lines, the
>> performance is very bad. I don't understand why, but my suggestions
>> are:
>> - you could provide a lite-version of a QTextEdit, which hasn't so
>> much
>> features (e. g. HTML), but is faster
>> - you could try to make your current QTextEdit faster, if possible.

I will bring these suggestions to the attention of the appropriate
developer.

One of our developers recommends a couple of performance tweaks :

1) Split text into paragraphs (instead of lines)
2) Disabling line wrapping (Although this carries obvious functional
penalties)

>> And features like:
>> - GetCurrentLine()
>> - GetNumberOfLines()
>> - or JumpToLine()
>> i missing totally

Task #109505 exists for our development team. You can use this ID to
track the status of this task online:
http://www.trolltech.com/developer/tasktracker.html
http://www.trolltech.com/customers/tasktracker.html

Our approach to text layout is fully documented here :
http://doc.trolltech.com/4.1/qt4-scribe.html

I hope that this helps.
Und bitte keine Kommentare über mein Englisch ;-)
MfG, Alci.

Aktuelle Projekte:
FModPlayer: Audio-Player auf Basis von FModEx
Epp.org: C++-IDE mit MinGW-Compiler

Entwickelt wird unter anderem mit Qt 4.1.4
M@g!ndo$ch
Beiträge: 70
Registriert: 7. Januar 2007 14:56

Beitrag von M@g!ndo$ch »

Hi,

weiß jemand ob sich da mittlerweile etwas getan haben sollte? Ich benutze Qt 4.3.0 und bin auch auf Performanceprobleme bei dem QTextEdit gestoßen.

Meine Anwendung empfängt Nachrichten über Udp und stellt diese in nem QTextEdit dar. Wenn die Messages schnell eintreffen geht die CPU-Last deutlich hoch :-( Mir ist allerdings aufgefallen, dass das anscheinend nur der Fall ist wenn der Text nicht in eine Zeile reinpasst, wenn also entweder die Zeile umgebrochen wird oder ein horizonzaler ScrollBar erscheint.

Kennt jemand eine Lösung für das Problem? Und ich meine nicht das Fenster so groß zu ziehen, dass der Text reinpasst :-P

Gruß
M@g
Antworten