Junior
V čem spočívá výhoda vyrovnávací paměti?
sobes.tech AI
Odpověď od AI
Bufferování v Java I/O snižuje počet přístupů k nízkoúrovňovým operacím vstupu/výstupu, což výrazně zvyšuje výkon. Čtení/zápis velkých bloků dat v jednom systémovém volání je efektivnější než opakované malé operace.
Při čtení: BufferedInputStream načítá data z hlavního proudu do vyrovnávací paměti. Pokud jsou požadovány malé části dat, jsou brány z bufferu bez nutnosti přístupu ke zdroji (disk, síť) pokaždé. Teprve když buffer dojde, načte se nový blok dat.
Při zápisu: BufferedOutputStream nejprve zapisuje data do bufferu. Zápis do hlavního proudu probíhá buď při naplnění bufferu, nebo při volání metody flush(). To minimalizuje počet systémových volání při zápisu.
Výhody:
- Snížení dodatečných nákladů: Snižuje počet přístupů k OS a hardwaru.
- Zvýšení propustnosti: Data jsou přenášena ve velkých blocích.
- Zlepšení výkonu: Celkový čas operací vstupu/výstupu se zkracuje.
Příklad použití 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) {
// Zpracování načteného bajtu
System.out.print((char) data);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}