Czy podczas czytania z InputStreams decydujesz jaki rozmiar użyć dla bajtu []?Jak decydujecie, jaki rozmiar bajtu [] należy użyć dla InputStream.read()?
int nRead;
byte[] data = new byte[16384]; // <-- this number is the one I'm wondering about
while ((nRead = is.read(data, 0, data.length)) != -1) {
...do something..
}
Kiedy używasz małego w porównaniu z dużym? Jakie są różnice? Czy liczba ma wynosić 1024? Czy robi to różnicę, jeśli jest to InputStream z sieci vs dysku?
Dzięki, nie mogę znaleźć jasnej odpowiedzi gdzie indziej.
Zastanawiam się to samo pytanie dla C#. Przypuszczam, że to ta sama odpowiedź. Prawdopodobnie można uwzględnić ślad pamięci (im mniejszy jest chunck, tym mniejszy jest ślad pamięci). Innym czynnikiem jest rodzaj strumienia wejściowego ... Strumień sieciowy zajmie więcej czasu, aby wypełnić bufor w porównaniu ze strumieniem pamięci ... Otrzymasz mniej kontroli za pomocą dużego bufora. –
Większe dane powinny przyspieszyć czytanie z szybkiego źródła (mniej iteracji), a z drugiej strony marnować miejsce w przypadku wolnych źródeł (prędkość jest zdominowana przez oczekiwanie, więc nie ma znaczenia, jak duża jest twoja pętla) – akappa