Sobes.tech
Junior

V čom spočíva výhoda vyrovnávacej pamäte?

sobes.tech AI

Odpoveď od AI

Bufferovanie v Java I/O znižuje počet prístupov k nízkoúrovňovým operáciám vstupu/výstupu, čo výrazne zvyšuje výkon. Čítanie/zápis veľkých blokov dát v jednom systémovom volaní je efektívnejšie ako opakované malé operácie.

Pri čítaní: BufferedInputStream načítava dáta zo základného prúdu do vyrovnávacej pamäte. Keď sú požadované malé časti dát, sú brané z bufferu bez potreby pristupovať ku zdroju (disk, sieť) každýkrát. Len keď buffer dôjde, načíta sa nový blok dát.

Pri zápise: BufferedOutputStream najskôr zapisuje dáta do bufferu. Zápis do základného prúdu prebieha buď pri naplnení bufferu, alebo pri volaní metódy flush(). To minimalizuje počet systémových volaní pre zápis.

Výhody:

  • Zníženie dodatočných nákladov: Znižuje počet prístupov k OS a hardvéru.
  • Zvýšenie šírky pásma: Dáta sa prenášajú vo veľkých blokoch.
  • Zlepšenie výkonu: Celkový čas operácií vstupu/výstupu sa skracuje.

Príklad použitia 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) {
                // Spracovanie načítaného bajtu
                System.out.print((char) data);
            }

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}