QSortFilterProxyModel sehr lahm

Verschiedenes zu Qt
Antworten
nisa06
Beiträge: 11
Registriert: 22. Mai 2008 11:10

QSortFilterProxyModel sehr lahm

Beitrag von nisa06 »

hallo,

ich wuesste gerne folgendes:

meine anwendung benutzt zum filtern von zeilen einer QTableView ein QSortFilterProxyModel.

meine anwenung ist ein tool zur ansicht von log-files. bestimmte eintraege werden mit dem QSortFilterProxyModel gefiltert.

allerdings ist bei mehreren tausend zeilen das filtern schon recht langsam.

1. gibt es hierfuer eine andere alternative bzw. irgendwas worauf man achten muesste damit es nicht so lang dauert ?

ich weiss dass bestimmte suchmuster (regex, wildcard etc.) auswirkungen auf die filterdauer haben, aber selbst bei exaktem filter (einfacher string wird als suchmuster vorgegeben), dauert es recht lang (unter umstaenden ne halbe bis eine minute fuer ca. 100.000 eintraege der source-view die zu filtern sind).


2. wenn man obiges nicht umgehen kann: wie kann ich herausfinden wann der proxy mit dem filtern fertig ist (benutzer muesste informiert werden etc.).

danke.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Dass der Proxy langsam sein kann will ich nicht wiederlegen, aber wir kommst du darauf, daß es der Proxy ist und nicht das Model oder die View?
nisa06
Beiträge: 11
Registriert: 22. Mai 2008 11:10

...

Beitrag von nisa06 »

weil sich die suchdauer mit aenderung des such-patterns veraendert und nicht davon abhaengig ist, wieviele elemente in der view zu sehen sind: ich kann mit komplexem pattern suchen und nur wenige matches haben (dauert lange) oder mit einfachem pattern (fixed string) suchen und viele matches haben (dauert unter umstaenden kuerzer) .. muesste also am proxy liegen
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Mit 2,5 Mio. Zeilen dauert es hier 20sec. => Profiler verwenden und nicht raten
nisa06
Beiträge: 11
Registriert: 22. Mai 2008 11:10

Beitrag von nisa06 »

folgendes, nur damit klar ist worum es geht:
zum filtern wird eine ableitung der klasse QSortFilterProxyModel verwendet wobei die ergebnisse in einer QTableView angezeigt werden.

2.5 Mio zeilen in 20 Sek. !?!?! -->
wieso solche messungen, wenn Du doch selbst anscheinend nicht "raten" musst?

sind die 2.5 mio zeilen auch auf solch eine ausgangssituation bezogen !?!?
falls ja, waere es schoen, wenn Du mal genau schreiben koenntest, was Du eigentlich genau gemessen hast mit den 20 Sek. (start, ende)????
das waere vielleicht hilfreicher.

cheers.
Oliver Hom
Beiträge: 33
Registriert: 27. Mai 2009 12:44

Beitrag von Oliver Hom »

Ich habe auch ein Proxy zum Filtern von Logeinträgen, selbst bei komplexen Ausdrücken geschieht dies bei 20000 Zeilen sofort.

Bei der Entwicklung hatte ich auch mal eine langsame Phase, dort war aber mein Modell kaputt bzw. nicht optimal.

Ich würde mir als erstes das Modell nochmal genauer anschauen.

Gruß,
Oliver
Antworten