Mam problem, który wymaga przeanalizowania kilku plików dziennika z komputera zdalnego. Istnieje kilka komplikacje: 1) Plik może być używany 2) Pliki mogą być dość duże (100mb +) 3) Każdy wpis może być multi-lineJaki jest najlepszy sposób czytania i analizowania dużego pliku tekstowego przez sieć?
Aby rozwiązać ten problem w użyciu, Najpierw muszę go skopiować. Obecnie kopiuję go bezpośrednio ze zdalnego komputera na lokalny komputer i przetwarzam go tam. To prowadzi do wydania 2. Ponieważ pliki są dość duże, kopiowanie ich lokalnie może zająć sporo czasu.
Aby wydłużyć czas analizowania, chciałbym utworzyć wielowątkowy parser, ale to sprawia, że obsługa wielowątkowych wpisów jest nieco trudniejsza.
Dwie główne kwestie: 1) Jak mogę przyspieszyć transfer plików (kompresja ?, Czy przeniesienie lokalnie nawet neccessary ?, Czy mogę przeczytać w pliku użytku w jakiś inny sposób) 2) W jaki sposób mogę radzić sobie z wpisami wielowierszowymi podczas dzielenia linii między wątkami?
AKTUALIZACJA: Powodem, dla którego nie zrobiłem oczywistego przetwarzania z powodu serwera jest to, że chcę mieć jak najmniejszy wpływ procesora. Nie chcę wpływać na wydajność testowania systemu.
Jeśli skopiowanie pliku tekstowego o wielkości 100 MB bezpośrednio przez sieć zajmuje x sekund, a klient zdalny skompresuje i wyśle plik, a następnie deflacja/odczyt zajmie x/4 sekundy, czy to nie jest tego warte? (Uwaga: właściwie nie wiem, ile czasu zajęłoby kompresowanie/wysyłanie/dekompresowanie/odczyt). – midas06
Za wszelką cenę możesz (i powinieneś) użyć kompresji w sieci. Tak jak powiedziałem, przejrzyj opcje przesyłania strumieniowego IO - niektórzy sugerowali kilka bibliotek zip. OTOH, jeśli możesz umieścić program na zdalnym końcu, tam przetwarzanie tam! –