Wpis z mikrobloga

#programowanie #csharp

Mam ogromny plik tekstowy, powiedzmy pół miliona linii. Potrzebuję pobrać 1000 ostatnich. W jaki sposób to zrobić, żeby było najwydajniej? Moje rozwiązanie na szybko wygląda tak: czytam cały plik (File.ReadAllLines()), sprawdzam długość i kopiuję elementy od (length-1000) do (max-1) do nowej tablicy. Działać działa, ale program potrafi się przywiesić...
  • 12
  • Odpowiedz
@kielonek: próbowałem ze strumieniami. Jest niby stream.Seek(), ale używając tego musiałbym dodatkowo sprawdzać, czy nie zaczynam czytać gdzieś w środku linii (offset ustawiany jest na bajty, a nie na linie, jeśli dobrze rozumiem).
  • Odpowiedz
@Skarfejs: Nie chcę gotowych rozwiązań. Trochę skorzystałem z porady @kielonek (trochę, bo nie liczę ilości wystąpień \n, tylko rozbijam stringa na tablicę stringów i liczę ilość elementów, i tak musiałbym rozbić, bo dalej korzystam z tablicy). Działa dużo szybciej niż to co napisałem na początku ;)
  • Odpowiedz