AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Wortliste erstellen: Zählroutine zu langsam
Thema durchsuchen
Ansicht
Themen-Optionen

Wortliste erstellen: Zählroutine zu langsam

Ein Thema von friedemann2009 · begonnen am 10. Mai 2010 · letzter Beitrag vom 10. Mai 2010
 
friedemann2009

Registriert seit: 10. Feb 2010
49 Beiträge
 
#1

Wortliste erstellen: Zählroutine zu langsam

  Alt 10. Mai 2010, 17:56
Liebe Leute,

ich hätte noch eine weitere Frage, die v.a. die Performance angeht. Ich habe rund 5000 Textdateien, die zeilenweise aus Wörtern bestehen (genauer: jede Zeile hat das Format ZuZählenderAusdruck TAB EinUninteressantesWort TAB NochEinUninteressantesWort). Ich möchte die einzelnen Wörter jeder Datei zählen und in eine Liste addiert zusammenfassen. Jede Textdatei hat im Schnitt 4000 Zeilen, macht insg. ~ 20000000 zu verarbeitende Zeilen. Den Code, den ich bisher dazu habe, braucht aber viel zu lang (~Stunde..). Hat jemand eine Idee, wie ich das optimieren könnte?

Danke und viele Grüße,
frieder

Delphi-Quellcode:
Procedure Clickblabla();
var
 TokenListeKorpus, tokenlist: tstringlist
begin
  TokenListeKorpus:= tstringlist.create;
  tokenlist:= tstringlist.create;

  {Lade Textdatei in tokenliste..}

  ZaehleAlleWoerterDerListe(tokenlist {Quelldatei}, TokenListeKorpus {Gesamtliste});

  {Gib die TokenListeKorpus aus, gib die Listen frei usw.}
end;

Procedure ZaehleAlleWoerterDerListe(const tokenliste: tstringlist; var TokenListeKorpus: tstringlist);
var
 i: integer;
 token: string;
begin
 for i:= 0 to tokenliste.count-1 do
   begin
     token:= gibmirtoken(tokenliste.strings[i], #9);
     if TokenListeKorpus.Values[token] = 'then
       TokenListeKorpus.Values[token] := '1'
     else
       TokenListeKorpus.Values[token]:= inttostr(strtoint(TokenListeKorpus.Values[token]) + 1);
   end;
end;

function gibmirtoken(s:string; sep:char) :string;
begin
  Result := Copy(s, 1, Pos(sep, s) - 1);
  { Funktion ermittelt aus tokenliste.zeile den zu zählenden "Ausdruck" der Zeile, die das
    folgendes Format hat: Ausdruck TAB EinUninteressantesWort TAB NochEinUninteressantesWort }

end;
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz