ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Java I/O <5 - Buffered Stream>
    언어/자바 2023. 12. 25. 23:19

     

     

    막연하게만 사용하던 I/O를 조금 더 이해해보고자 작성한 글입니다.
    기본적으로 I/O는 O/S 레벨에서 이루어지고 byte를 다룬다는 것을 생각야해합니다.

     

     


     

    Buffered I/O Stream

    앞에서 다루었던 I/O Stream들을 보다 효율적으로 다루기 위한 방법이다.
    버퍼를 사용할 때와 안할 때의 차이를 왜 효율적인지 생각해보자.

     

     

    동기식 I/O의 동작 방식

    핵심은 파일이나 네트워크를 다루는 I/O는 CPU연산에 비해 엄청나게 느리기 때문에 적게 할수록 효율적이다는 것이다.

     

    위 그림을 보면 1. InputStream은 매번 read()가 호출될 때마다 운영체제 혹은 디스크 레벨까지 접근을 하게 된다.
    하지만 2번 BufferedInputStream 같은 경우에는 일단 디스크에서 버퍼 크기만큼의 데이터를 한번에 가져온 뒤, 이후 실행에서는 버퍼의 데이터를 전달한다.

    버퍼가 비어있는 경우에만 하위 레벨에 접근하기 때문에, 버퍼를 사용하지 않는 경우보다 파일 I/O를 적게 호출하게 되어 효율적인 리소스 사용이 가능해진다.

     

     

     

     

    '언어 > 자바' 카테고리의 다른 글

    Java IO <7 - Writer>  (0) 2023.12.25
    Java I/O <6 - Reader>통계  (1) 2023.12.25
    Java I/O <4 - Network Stream>  (1) 2023.12.25
    Java I/O <3 - FileStream>  (0) 2023.12.25
    Java I/O <2 - InputStream>  (0) 2023.12.23
Designed by Tistory.