성능 향상 보조 스트림

: 프로그램이 입출력 소스와 직접 작업하지 않고 중간에 메모리 버퍼(Buffer)와 작업함으로써 실행 성능을 향상시킴

: 버퍼는 데이터가 쌓이기를 기다렸다가 꽉 차게 되면 데이터를 한꺼번에 하드 디스크로 보냄으로써 출력 횟수를 줄여줌

 

BufferedInputStream

: 바이트 입력 스트림에 연결되어 버퍼를 제공해주는 보조스트림

BufferedReader

: 문자 입력 스트림에 연결되어 버퍼를 제공해주는 보조스트림

BufferedInputStream bos = new BufferedOutputStream(바이트입력스트림);
BufferedReader bw = new BufferedWriter(문자입력스트림);

 

버퍼 사용여부에 따른 성능비교

package sec05.exam03_bufferedinputstream_YJ;

import java.io.BufferedInputStream;
import java.io.FileInputStream;

public class BufferedInputStreamExample {
	public static void main(String[] args) throws Exception {
		long start = 0; //시작시간
		long end = 0; //종료시간
		
		FileInputStream fis1 = new FileInputStream("C:/JavaProgramming/source/chap18/src/" 
							+ "sec05/exam03_bufferedinputstream_YJ/BufferedInputStreamExample.java");
		start = System.currentTimeMillis();
		while(fis1.read() != -1) {}
		end = System.currentTimeMillis();
		System.out.println("보조 스트림 사용하지 않았을 때: " + (end - start) + "ms");
		
		FileInputStream fis2 = new FileInputStream("C:/JavaProgramming/source/chap18/src/" 
				+ "sec05/exam03_bufferedinputstream_YJ/BufferedInputStreamExample.java");
		BufferedInputStream bis = new BufferedInputStream(fis2); //버퍼스트림 생성
		start = System.currentTimeMillis();
		while(bis.read() != -1) {}
		end = System.currentTimeMillis();
		System.out.println("보조 스트림 사용했을 때: " + (end - start) + "ms");
		
		bis.close();
		fis2.close();
	}
}
보조 스트림 사용하지 않았을 때: 0ms
보조 스트림 사용했을 때: 0ms

 

콘솔로부터 라인 단위로 읽기

package sec05.exam04_bufferedreader_YJ;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;

public class BufferedReaderExample {
	public static void main(String[] args) throws Exception {
		InputStream is = System.in;
		Reader reader = new InputStreamReader(is);
		BufferedReader br = new BufferedReader(reader); //버퍼 스트림 생성
		
		System.out.print("입력: ");
		String lineString = br.readLine();
		
		System.out.println("출력: " + lineString);
	}
}
입력: 한 줄 전체를 읽습니다.
출력: 한 줄 전체를 읽습니다.

+ Recent posts