optymalne wydajnościowo cięcie stringa

0

Witajcie,

mam listę stringów

cośtam#cośtam2#cośtam3
innecoś#innecoś2
newcoś#newcoś2#newcoś3#newcoś4#newcoś5#newcoś6

Chodzi o to, że każda kolejna dana w wierszu oddzielona jest #. Szukam najszybszego sposobu (najbardziej wydajnego) na wyciągnięcie ostatniej danej z każdego wiersza, najlepiej w jednej linijce, ale może być oddzielna metoda. Chcę wyświetlić w konsoli te ostatnie dane, czyli:

cośtam3
innecoś2
newcoś6

szukam metody, która będzie absolutnie najszybsza, co mam wstawić po kropce, w kodzie poniżej? (chodzi mi o splitowanie, substringi i wszelkie inne sposoby, które na to pozwolą i zrobią to najwydajniej)

foreach (string wiersz in Tablica){
     Console.WriteLine(wiersz. );
}

Oczywiście, jeśli ktoś zauważy, że dla 3 stringów różnice w wydajności ich pocięcia będą pomijalne i nie ma po co się nad tym zastanawiać, to dodam, że docelowo mówimy o milionach takich operacji na milionach wierszy i każda sekunda jest na wagę złota.

Dziękuję i pozdrawiam.

0

Zdaje się, że metoda LastIndexOf znajdzie Ci pozycje ostatniego #, a znając ją wystarczy użyć Substring.

1

Jeśli potrzebujesz wszystkiego, lepiej niż string.Split nie zejdziesz.
Jeśli potrzebujesz tylko ostatniego elementu -> http://ideone.com/enugug (string.LastIndexOf oraz string.Substring)

Ale jeśli faktycznie potrzebujesz takiej niesamowitej szybkości, zastanów się nad:

  1. przepisaniem tego do czegoś bardziej nadającego się do bardzo wydajnych obliczeń (wątpię żeby to pomogło, bo...)
  2. raczej tych danych nie tworzysz w locie, czyli musisz je skądś czytać (z dysku). W takim wypadku koszt IO będzie 10x większy niż wszystkie twoje operacje i cała optymalizacja jest bez sensu ;)
0

Dzięki za szybką odpowiedź i uzmysłowienie problemu. Faktycznie dane już są, nie mam wpływu na ich generowanie.

Dziękuję i pozdrawiam.

1 użytkowników online, w tym zalogowanych: 0, gości: 1