Seite 1 von 1
je voller desto langsamer suchen
Verfasst: Do, 05.02.2009 21:43
von steffn
Hallo und hilfe!
Meine Tabelle mit Wörtern wird immer voller und das Suchen mit 'searchdescriptor' nach einzelnen dauert immer länger, egal wie klein der Suchbereich auch ist. Und das regt mich sehr auf.
In den Zellen ist je ein Wort.
Die Spalten sind alphabetisch sortiert.
Je voller ein Blatt in Calc ist, desto länger dauert das Suchen nach einem Wort in einer Zelle.
Je höher der Index der Zeile der Zelle mit dem Wort ist, desto länger dauert das Suchen danach.
Könnte mir jemand bitte erklären, wieso das so ist?
Und hat jemand Tipps, wie man die Suchzeit verringern kann?
Meine einzige Idee warum das so ist, lautet: Open Office greift sich alle beschriebenen Zellen, was so lange dauert.
Meine einzige Idee das zu umgehen ist, den Suchbereich in eine leere Datei zu kopieren und dann dort zu suchen, aber ... das will ich im Moment noch nicht akzeptieren.
Re: je voller desto langsamer suchen
Verfasst: Mi, 10.08.2011 15:48
von steffn
alte Idee,
wieder augegriffen,
zweiter Versuch,
bitte um Unterstützung
Re: je voller desto langsamer suchen
Verfasst: Mi, 10.08.2011 18:48
von F3K Total
Hallo Steffn,
nach meiner Kenntnis kann man den Searchdescriptor auch auf einen "CellRange" anwenden:
Code: Alles auswählen
sub search_in_range
osheet = thisComponent.Sheets(0)'erste Tabelle
oRange=osheet.getCellRangebyName("A1:N600")'Zellbereich
oSuche = oRange.createSearchDescriptor()
oSuchstring="600"
With oSuche
.setSearchString(oSuchstring)
End With
oSuchErg = oRange.findall(oSuche)
oSuchErgEnum=oSuchErg.createenumeration
while oSuchErgEnum.hasmoreelements
oEinzelSuchErgebnis=oSuchErgEnum.nextelement
msgbox "Der Suchbegriff '"+oSuchstring+"' wurde in Zelle "+oEinzelSuchErgebnis.AbsoluteName+" gefunden"
wend
End sub
Gruß R
Re: je voller desto langsamer suchen
Verfasst: Do, 18.08.2011 12:22
von steffn
Hallo F3K Total.
Hast Du
steffn hat geschrieben:egal wie klein der Suchbereich auch ist
bei Deiner Antwort bedacht, oder hast Du das übersehen?
Re: je voller desto langsamer suchen
Verfasst: Do, 18.08.2011 13:24
von DPunch
Aloha
steffn hat geschrieben:Hast Du (...) bei Deiner Antwort bedacht, oder hast Du das übersehen?
Möglicherweise hat er es bewusst aussen vor gelassen, weil die Größe des Suchbereichs natürlich eine Rolle spielt, je kleiner desto schneller.
Vielleicht solltest Du mal zum Besten geben, was Du wo wie suchst.
Re: je voller desto langsamer suchen
Verfasst: Do, 18.08.2011 13:45
von steffn
Hallo DPunch.
Ich habe den Sinn darin nicht gefunden, jemandem, der behauptet, den Suchbereich klein zu halten, zu empfehlen, den Suchbereich zu verkleinern.
Was:
Ein Wort in einer Spalte mit jeweils einem Wort pro Zelle.
Wo:
In einem Bereich in einer Spalte auf einem Tabellenblatt in Calc.
Wie:
Keine Ahnung, was Du mit "wie" meinst.
Re: je voller desto langsamer suchen
Verfasst: Do, 18.08.2011 14:34
von komma4
steffn hat geschrieben: dauert immer länger, egal wie klein der Suchbereich auch ist.
Dann mal konkret:
Welche OOo Version?
Welches Betriebssystem?
Welches Speicherformat?
Welcher Suchbereich?
Mit welchem Code?
Ich kann hier keine Geschwindigkeitsprobleme bei einem 14000-Zellen grossem Bereich feststellen.
Re: je voller desto langsamer suchen
Verfasst: Do, 18.08.2011 17:30
von DPunch
Aloha
steffn hat geschrieben:Keine Ahnung, was Du mit "wie" meinst.
Naja, "wie" eben.
Mit einem Makro? Wie sieht das Makro aus? Wie definierst Du den Suchbereich? Suchst Du auch tatsächlich in diesem Bereich? etcpp
In einem Tabellenblatt, in dem ich die ersten 201 * 10002 Zellen beschreiben lassen habe mit unterschiedlichen Strings (201 Spalten * 10002 Zeilen = 2 Mio beschriebene Zellen), dauert die Suche nach dem in Zelle "EU5001" (Spalte 151) stehenden String knapp 3500 Ticks, wenn ich die Suche über das ganze Blatt laufen lasse.
Lasse ich nur in der Spalte "EU" suchen, dauert das Ganze noch knapp 250-300 Ticks (Faktor >10).
Grenze ich die Suche auf den Bereich "EU2500:EU7500" ein, dauert die Suche immer <250 Ticks.
Das heisst, die Suche braucht selbst bei 10000 beschriebenen Zeilen nichtmal eine halbe Sekunde, wenn ich sie auf eine einzelne Spalte beschränken kann.
Das widerspricht in vollem Umfang Deiner Aussage
egal wie klein der Suchbereich auch ist
und lässt auf eine falsche Herangehensweise schliessen.
Daher ist die essenzielle Frage: "wie" suchst Du?