Ich versuche, die Suche nach einer Zeichenfolge in einer großen Textdatei (300-600 MB) zu optimieren. Mit meiner derzeitigen Methode dauert es zu lange.C# Suche große Textdatei
Derzeit verwende ich IndexOf
, um nach der Zeichenfolge zu suchen, aber die Zeit, die es dauert, ist viel zu lang (20s), um einen Index für jede Zeile mit der Zeichenfolge zu erstellen.
Wie kann ich die Suchgeschwindigkeit optimieren? Ich habe versucht Contains()
, aber das ist auch langsam. Irgendwelche Vorschläge? Ich habe an Regex-Match gedacht, aber ich sehe keinen signifikanten Geschwindigkeitsschub. Vielleicht ist meine Suchlogik fehlerhaft
Beispiel
while ((line = myStream.ReadLine()) != null)
{
if (line.IndexOf(CompareString, StringComparison.OrdinalIgnoreCase) >= 0)
{
LineIndex.Add(CurrentPosition);
LinesCounted += 1;
}
}
Wonach suchen Sie genau? Wörter? – Lloyd
Was ist Ihr CompareString .. bitte zeigen Sie ein Beispiel von dem, was Sie suchen .. – MethodMan
Sind Sie sicher, dass es Ihr suchender Teil ist? Wie lange dauert es, um überhaupt nichts zu überprüfen und nur die Datei Zeile für Zeile zu lesen? –