Próbuję zoptymalizować wyszukiwanie ciągu znaków w dużym pliku tekstowym (300-600 MB). Używanie mojej obecnej metody trwa zbyt długo.C# wyszukiwanie dużego pliku tekstowego
Obecnie używam IndexOf
, aby wyszukać ciąg znaków, ale czas, jaki zajmuje, jest zbyt długi (20s), aby utworzyć indeks dla każdej linii za pomocą ciągu.
Jak mogę zoptymalizować prędkość wyszukiwania? Próbowałem już Contains()
, ale to również jest powolne. Jakieś sugestie? Myślałem o dopasowaniu do regex, ale nie widzę, żeby miało znaczący wzrost prędkości. Może moja logika wyszukiwania jest wadliwa
przykład
while ((line = myStream.ReadLine()) != null)
{
if (line.IndexOf(CompareString, StringComparison.OrdinalIgnoreCase) >= 0)
{
LineIndex.Add(CurrentPosition);
LinesCounted += 1;
}
}
Czego dokładnie szukasz? Słowa? – Lloyd
Jaki jest Twój CompareString ... pokaż przykład tego, czego szukasz .. – MethodMan
Czy jesteś pewien, że to Twoja wyszukiwarka? Ile czasu zajmuje wykonanie żadnego sprawdzenia i po prostu odczytanie pliku wiersz po linii? –