JAVA 11강_3_보조 스트림

열라뽕따히·2024년 3월 2일

JAVA

목록 보기
71/79

보조 스트림 관련 클래스

  • 보조 스트림 : 다른 스트림과 연결되어 여러 가지 편리한 기능을 제공해주는 스트림을 말함

  • 보조 스트림은 중간에 메모리 버퍼(buffer)와 작업을 함으로써 실행의 성능을 향상시킬 수 있음
    예를 든다면, 프로그램은 직접 하드 디스크에 데이터를 보내지 않고
    메모리 버퍼에 데이터를 보냄으로써 쓰기 속도가 향상
    버퍼는 데이터가 쌓이기만을 기다렸다가 버퍼가 꽉 차게 되면
    데이터를 한꺼번에 하드 디스크로 보내 줌으로써 출력 횟수를
    줄여주게 됨

  • 스트림의 기능(성능)을 향상시키는 클래스

  • Bufferedxxx : 버퍼를 제공해주는 보조 스트림 관련 클래스

  • 버퍼(buffer) : CPU와 IO 간의 속도 차이를 보완해줌

출처 : Buffer 그림 예시





바이트 스트림과
바이트 스트림에 보조 스트림을 이용하여 이미지를 읽어오는 속도 차이를 확인해보자!



=============================코드=============================

public static void main(String[] args) throws Exception {
// try ~ catch문 대신 throws Exception 코드 작성
		
	// 1. 바이트 스트림 방식으로 이미지 파일을 읽어 오자
		FileInputStream is = new FileInputStream("C:/test/Koala.jpg");
		
		long start, end;
		
		start = System.nanoTime();
		
		while(is.read() != -1) { }  // 출력만 할 것이기 때문에 반복문 안에 실행값 넣지 않음!
		
		end = System.nanoTime();
		
		System.out.println("바이트 스트림을 이용한 경우 >>> " + (end-start) + "ns");
		
		is.close();
		
		System.out.println();
		
		
	// 2. 바이트 스트림에 보조 스트림을 연결하여 이미지 파일을 읽어오자
		FileInputStream is1 = new FileInputStream("C:/test/Koala.jpg");
		
	// 위가 InputStream이라면 보조 스트림도 InputStream이어야 함 (Reader라면 밑에도 Reader)
		BufferedInputStream bis = new BufferedInputStream(is1);  // 보조스트림에다가 바이트 스트림을 연결함 
		
		start = System.nanoTime();
		
		while(bis.read() != -1) { }  // 출력만 할 것이기 때문에 반복문 안에 실행값 넣지 않음!
		
		end = System.nanoTime();
		
		System.out.println("보조 스트림을 이용한 경우 >>> " + (end-start) + "ns");
		
		bis.close(); is1.close();  // bis가 나중에 생성되었으니 먼저 닫혀야 함!

	}

=============================실행=============================

보조 스트림이 훨씬 빠르다는 것을 알 수 있음!

0개의 댓글