Kuo naudingas buferiavimas?
sobes.tech AI
Atsakymas iš AI
Java I/O buferizacija sumažina prieigų prie žemo lygio įvesties/išvesties operacijų skaičių, kas žymiai padidina našumą. Didelių duomenų blokų skaitymas/rašymas vienu sisteminiu iškvietimu yra efektyvesnis nei daugybė smulkių operacijų.
Skaitant: BufferedInputStream nuskaitys duomenis iš pagrindinio srauto į buferinę atmintį. Kai prašoma mažų duomenų porcijų, jos paimamos iš buferio, nereikalaujant kreiptis į šaltinį (diską, tinklą) kiekvieną kartą. Tik kai buferis išsenka, įvyksta naujas duomenų bloko skaitymas.
Rašant: BufferedOutputStream pirmiausia įrašo duomenis į buferį. Rašymas į pagrindinį srautą įvyksta arba užpildžius buferį, arba iškvietus metodą flush(). Tai sumažina sisteminių iškvietimų skaičių.
Privalumai:
- Mažesnės išlaidos: sumažėja prieigos prie OS ir įrangos skaičius.
- Padidėjęs pralaidumas: duomenys perduodami dideliais blokais.
- Padidėjęs našumas: bendras įvesties/išvesties operacijų laikas sumažėja.
Pavyzdys, kaip naudoti 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) {
// Apdorojamas nuskaitytas baitas
System.out.print((char) data);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}