Einzelnen Beitrag anzeigen

Alallart

Registriert seit: 8. Dez 2015
162 Beiträge
 
#1

Wie kann man diesen Code optimieren

  Alt 10. Apr 2025, 11:36
Ich habe ein Tool geschrieben, das viele Sätze miteinander vergleicht. Nun habe ich festgestellt, dass einige Sätze gleich sind, sich aber in Sonderzeichen unterscheiden. Also habe ich eine Routine hinzugefügt, die die Sätze ohne Sonderzeichen vergleicht. Dazu werden alle Sonderzeichen aus dem Satz entfernt. So wird zB aus: "US-Zölle: So zensiert China kritische Online-Beiträge" der Text "USZölleSozensiertChinakritischeOnlineBeiträge". Die Trefferquote ist höher. Aber auch die Suchdauer erhöht sich. So wurde aus einer Suche ohne die Routine in 7 Sekunden, eine Suche in 30 Sekunden, mit der Routine. Die Dauer hat sich also vervierfacht. Es ist auch sehr viel Text das verglichen wird.

Gibt es etwas, was alles schneller entfernt?

Die Routine die ich hinzugefügt habe ist die (aufgerufen wird die CleanUpText2 Funktion):

Delphi-Quellcode:
//Funktion entfernt Zeichen. Macht zB aus "Ab Cd Ef" den Text "AbCdEf"
function RemoveChars(S: String; C: Char): String;
begin
  Result := S;

  // Zeichen entfernen, zB Leerzeichen
  while Pos(C, Result) > 0 do
    Delete(Result, Pos(C, Result), 1);
end;

//Entfernt bestimmte Zeichen aus dem Text
function CleanUpText(S: String): String;
begin
  Result := S;

  Result := RemoveChars(S, ' ');
  Result := RemoveChars(S, '-'); //Bindestrich
  Result := RemoveChars(S, Chr(151)); //Geviertstrich
  Result := RemoveChars(S, '_');
  Result := RemoveChars(S, ':');
  Result := RemoveChars(S, ';');
  Result := RemoveChars(S, ',');
  Result := RemoveChars(S, '.');
  Result := RemoveChars(S, '!');
  Result := RemoveChars(S, ''''); //Das ' Zeichen
end;

function CleanUpText2(S: String): String;
begin
  Result := CleanUpTitle(S);
end;
  Mit Zitat antworten Zitat