Ich möchte für eine Textdatei eine Tabelle erstellen, in der für jeden Buchstaben (Spalte 1) die Häufigkeit seines Auftretens in der Datei gezählt wird (Spalte 2).
Da es möglichst schnell gehen soll, kommt eine TStringList nicht in Frage - ich habe es deshalb mit der THash-Komponente von Ciaran McCreesh probiert:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| strhash:= TIntegerHash.Create; try for i := 0 to length(datei_str) - 1 do strhash.Items[datei_str[i]]:= strhash.Items[datei_str[i]];
strhash.Restart; while strhash.Next do begin key_lst.Add(strhash.CurrentKey); val_lst.Add(strhash[strhash.CurrentKey]); end; finally strhash.Free; end; |
Als Ergebnis dieser Prozedur erhalte ich tatsächlich die Listen von Schlüsseln (key_lst) und Werten (val_lst).
Leider dauert der Vorgang immer noch viel zu lange (mit einem vergleichbaren Python-Skript geht es in Sekundenschnelle - kommt aber als Alternative für das Gesamtprogramm nicht in Frage).
Könnte man es irgendwie schneller machen?
Moderiert von
AXMD: Delphi-Tags hinzugefügt
Moderiert von
AXMD: Topic aus Dateizugriff verschoben am Mo 02.06.2008 um 13:47
Moderiert von
Narses: Topic aus Algorithmen, Optimierung und Assembler (Delphi-Library) verschoben am Do 18.09.2008 um 19:36