Obliczanie szybkości pobierania

0

Witajcie

Po godzinie poszukiwań nie udało nam się znaleźć nawet skrawka kodu, który instruował by nas w jaki sposób najlepiej mierzyć prędkość pobierania pliku w javie. Oczywiście nie chodzi o wzór, bo wiadomo, że najlepszy będzie (ilość_danych_w_ciągu_ostatnich_3_sekund)/3. Chodzi o najbardziej eleganckie podejście do problemu.

Powiedzmy, że kod wygląda tak:

int mmm = InputStream.read();
while ( mmm != -1 )
{
    OutputStream.write(mmm);
    mmm = InputStream.read();
}

Próby znalezienie prędkości wykonane "po naszemu" spowodowały, że plik pobierał się ok. 15x wolniej niż przed wprowadzeniem tych mechanizmów. Dlatego prosimy Was o drobną pomoc :)

Pozdro

0

Jestem prawie pewien, że w pętli, uzyskiwana była liczba pobranych bajtów i następnie wykonywał się synchronicznie jakiś kod (być może okienkowy). Jeżeli tak, to właśnie tam leżała przyczyna tego spowolnienia. Od wykonywania długotrwałych zadań - a takim jest również pobieranie pliku (dostęp i transfer z hdd jest o jakieś 100-1000 razy wolniejszy od dostępu i transferu w RAM) - są takie gotowe klasy jak SwingWorker, Thread itp. Należy ich po prostu używać i traktować pobieranie danych (otwieranie plików i buforowanie ich) jako czasochłonną, asynchroniczną operację.

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