Możliwe wyjaśnienia:
-
Java nic nie robi, podczas gdy Oracle oblicza pierwsze 1000 wierszy zamiast pierwszych 10.
-
Oracle nic nie robi, podczas gdy Java oblicza ostatnie 1000 wierszy zamiast ostatnich 10.
-
Protokoły komunikacyjne (np. TCP/IP) dużo czekają, a następnie muszą obsłużyć więcej danych naraz, ale szczytowy transfer danych zostanie ograniczony przez limity sprzętowe . Jest to równoważone przez obciążenie protokołu, więc powinien być optymalny rozmiar pobierania, a wszystko, co jest mniejsze lub większe, byłoby wolniejsze;))
-
Byłoby gorzej, gdyby proces pobierania był zsynchronizowany z innym kodem Java, tak że Java prosi o więcej wierszy dopiero po przetworzeniu poprzednich danych a Oracle nic w międzyczasie nie robi.
Wyobraź sobie, że są 3 osoby:
- Pierwszy składa papier A4 na pół
- Drugi przenosi stosy złożonego papieru z jednego pokoju do drugiego
- Trzeci wycina jakiś kształt ze złożonego papieru.
Jak duże powinny być stosy, jeśli pierwszy musi poczekać, aż drugi wróci, a drugi musi poczekać, aż trzeci zakończy pracę?
Stosy po 1000 nie będą lepsze niż stosy po 10, jak sądzę;))