Sobes.tech
Junior

ბუფერული პროცესის უპირატესობა რა არის?

sobes.tech AI

პასუხი AI-სგან

Java I/O-да буферიზაცია ниски даражадаги кириш-чыгыш операцияларына бўлган мурожаатлар сонини камайтиради, бу эса ишлаш самарадорлигини сезиларли даражада оширади. Катта блок маълумотларни бир системанинг чақируви билан ўқиш/ёзиш, кичик операцияларга нисбатан самаралироқ.

Ўқишда: BufferedInputStream асосий тўрдан маълумотларни буфер ёдгорликка ўқийди. Кичик маълумот қисмлари талаб қилинганда, улар ҳар сафар манбага (диск, тармоқ) мурожаат қилмасдан буфердан олинади. Фақат буфер тўлганда янги маълумот блоки ўқилади.

Ёзишда: BufferedOutputStream аввал маълумотларни буферга ёзади. Асосий тўрга ёзиш буфер тўлганда ёки flush() усули чақирилганда амалга ошади. Бу ёзишда системанинг чақирувлар сонини минималлаштиради.

Фойдалари:

  • Қўшимча харажатларни камайтириш: Операцион тизим ва ускуналарга бўлган мурожаатлар сонини қисқартиради.
  • Ўтказиш қобилиятини ошириш: Маълумотлар катта блоклар билан ўтказилади.
  • Ишлаш самарадорлигини ошириш: Ўзгаришлар умумий вақтни қисқартиради.

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) {
                // Ўқилган байтни қайта ишлаш
                System.out.print((char) data);
            }

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