Sobes.tech
Junior

Kāda ir buferēšanas priekšrocība?

sobes.tech AI

Atbilde no AI

Java I/O buferizācija samazina piekļuvi zema līmeņa ievades/izvades operācijām, kas ievērojami palielina veiktspēju. Lielu datu bloku lasīšana/rakstīšana vienā sistēmas izsaukumā ir efektīvāka nekā daudzkārtēja mazu operāciju veikšana.

Lasot: BufferedInputStream nolasa datus no galvenā plūsmas uz buferu atmiņā. Kad tiek pieprasītas mazas datu porcijas, tās tiek ņemtas no bufera, neprasot piekļuvi avotam (diska, tīkla) katru reizi. Tikai tad, kad buferis ir tukšs, notiek jauns datu bloka lasījums.

Rakstot: BufferedOutputStream vispirms ieraksta datus buferī. Ieraksts galvenajā plūsmā notiek vai nu aizpildot buferi, vai izsaucot metodi flush(). Tas samazina sistēmas izsaukumu skaitu.

Priekšrocības:

  • Mazākas izmaksas: samazinās piekļuve OS un aparatūrai.
  • Palielināta caurlaidspēja: dati tiek pārsūtīti lielos blokos.
  • Paaugstināta veiktspēja: kopējais ievades/izvades operāciju laiks samazinās.

Piemērs, kā izmantot 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) {
                // Apstrādā lasīto baitu
                System.out.print((char) data);
            }

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