linux-l: wiedermal perl
Steffen Dettmer
steffen at dett.de
Mi Okt 31 12:49:08 CET 2001
* Ulrich Wiederhold wrote on Wed, Oct 31, 2001 at 12:36 +0100:
> > brauchst Du unbedingt regex? Oder geht auch string-vergleich,
> > evtl. substring? Wäre schneller.
>
> hmmm, bei nem Stringvergleich müßte ich ja jedes Wort im Path
> und im Filenamen mit jedem Suchwort vergleichen.
?! Wenn Du /wort.*wort/ matches, wird ja "alles durchprobiert",
also hier minimum match, d.h. von wortwort über wort????wort und
so weiter. Wenn Du das genauer weißt, und gezielter suchen kannst
(z.B. Pfad-Komponentenweise oder weiß ich was, oder zweites Wort
nur suchen, wenn erstes gefunden wurde), mußt Du eben nicht mehr
alle, sondern wenige ausgewählte Fälle testen --> schneller.
> Ich denke mal, daß würde dann summa summarum wieder länger
> dauern, oder sehe ich das falsch?
Kommt drauf an. Wenn Du es schaffst, das statt 100 Tests pro
Eintrag nur noch 50 gemacht werden müssen, ist's bestimmt
schneller (höngt vom Overhead ab, klar). Aber ich weiß ja nicht,
was Du machen möchtest.
> Hmm, das ist ne gute Idee. Ich müßte also beim Erstellen der Datei ein
> Indexverzeichnis erzeugen...
> Da muß ich nochmal drüber nachdenken, das könnte ziemlich kompliziert
> werden, und so ne Indexerstellung sollte ja auch nicht zu lange
> dauern...
Erstellung ist egal, kann notfalls nachts laufen :) Übrigens
gibt's da schon etliches Tools für, BTW, klar.
> Quasi beim Erstellen jeden File mit Path in die Worte aufteilen, Worte
[...]
> Das wird ne Menge Arbeit, ob sich das lohnt?
Na ja, gibt's aber alles schon fertig. Fragt sich eben nur, was
Du möchtest.
> > Den Hash kannst Du z.B. mit Data::Dumper speichern und
> > require lesen. Zugriff ist nach dem Bauen dann richtig schnell.
> Damit wollte ich mich sowieso schon mal auseinandersetzen, wegen der
> konfigurationsdatei (die ich derzeit aus einem File in ein hash
> einlese).
Na ja, require oder wie? Data::Dumper erzeugt "echten"
compilierbaren Perl-Code.
> > Fragt sich nur, was Du möchtest...
> Schwer zu sagen, ob das soviel schneller ist das sich der Aufwand
Nein, das meinte ich nicht. Ich wollte wissen, was Dein Ziel ist.
Vielleicht fällt mir dann ein ganz anderer Weg ein oder so. Ist
immer schwierig, zu solchen extrem Daten- und
Algorithmusabhänigen Sachen was zu sagen, ohne Daten und
Algorithmen zu kennen :) Wichtig ist: Struktur, Menge, Abfragen,
Anzahl lesender und schreibende Operationen. Letzeres kann sich
natürlich weiter aufsplitten. Jedenfalls kann man dann schon eher
entscheiden, ob man den Kram vor bearbeitet hält, oder nicht, und
wie. In manchen Fällen ist eine "Mischung" aus beidem schnell,
d.h., man macht ne "Halbsortierung", z.B. in einen Baum, das geht
ziemlich schnell, ist aber nur ne Halbordnung. Beim Zugriff muß
man immernoch bißchen was tun (weil man ja nur ne Halbordnung
hat), aber auch noch ziemlich flink. Unterm Strich ist das dann
schnell. Klingt merkwürdig, ist aber so :) Siehe "Heapsort" oder
wie auch immer das heißt, daß implementiert sowas. Nur mal als
Beispiel, wenn's jetzt auch nicht 100% zum Thema paßt :)
oki,
Steffen
--
Dieses Schreiben wurde maschinell erstellt,
es trägt daher weder Unterschrift noch Siegel.
Mehr Informationen über die Mailingliste linux-l