У чему се састоји предност буферирања?
sobes.tech АИ
Одговор од АИ
Buffering u Java I/O smanjuje broj pristupa niskonivojskim operacijama ulaza/izlaza, što značajno povećava performanse. Čitanje/zapis velikih blokova podataka u jednom sistemskom pozivu je efikasnije od višestrukih malih operacija.
Prilikom čitanja: BufferedInputStream čita podatke iz osnovnog toka u bafer memorije. Kada se traže male porcije podataka, one se uzimaju iz bafera bez potrebe za pristupom izvoru (disk, mreža) svaki put. Tek kada bafer ispražnjen, vrši se novo čitanje bloka podataka.
Prilikom zapisivanja: BufferedOutputStream najpre zapisuje podatke u bafer. Zapis u osnovni tok se dešava ili kada se bafer napuni ili kada se pozove metoda flush(). Ovo minimizira broj sistemskih poziva za zapis.
Prednosti:
- Smanjenje dodatnih troškova: Smanjuje broj pristupa OS i opremi.
- Povećanje propusnog opsega: Podaci se prenose velikim blokovima.
- Poboljšanje performansi: Ukupno vreme operacija ulaza/izlaza se skraćuje.
Primer korišćenja BufferedInputStream:
import java.io.FileInputStream;
import java.io.BufferedInputStream;
import java.io.IOException;
public class BufferedReaderExample {
public static void main(String[] args) {
try (FileInputStream fileInputStream = new FileInputStream("example.txt");
BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream)) {
int data;
while ((data = bufferedInputStream.read()) != -1) {
// Obrada pročitanog bajta
System.out.print((char) data);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}