[출처 : Java Press 책 발췌]
① 통상적으로 Stream계의 클래스를 사용함
java.io패키지에서 문자데이터 입출력시에는 Reader/Writer 클래스를
바이트단위 데이터 입출력시에는 InputStream/OutputStream 을 이용합니다.
다만, 아스키캐릭터의 경우에는 1문자가 1바이트이므로
InputStream/OutputStream 클래스를 이용할 수 있습니다.
약 100K 정도의 영문자로 이루어져 있는 텍스트파일을 가지고 예를 들겠습니다.
예) Reader계 클래스을 이용한 파일 입출력 예
FileReader in = new FileReader("test.txt");
int buf;
while ( buf = in.read() != -1)
{
.......
}
in.close();
예) InputStream계 클래스를 이용한 파일 입출력 예
FileInputStream in = new FileInputStream("test.txt");
int buf;
while ( buf = in.read() != -1)
{
.......
}
in.close();
위의 2가지 예를 비교한 performance 비교표는 아래와 같습니다.
사용클래스 | 처리시간(ms) |
FileReader | 18000 |
FileInputStream | 800 |
CPU : Pentium 300MHz/ Memory :128M / OS : Linux/ J2SE:1.3.1
InputStream계 클래스를 이용한 파일 입출력이 월등히 빠른 처리속도를 보임을 알 수 있습니다.
② Buffering을 이용
예) Buffering을 한 Reader계 클래스을 이용한 파일 입출력 예
FileReader in = new FileReader("test.txt");
BufferedReader bin = new BufferedReader(in);
int buf;
while ( buf = bin.read() != -1)
{
.......
}
bin.close();
예) Buffering을 한 InputStream계 클래스를 이용한 파일 입출력 예
FileInputStream in = new FileInputStream("test.txt");
BufferedInputStream bin = new BufferedInputStream(in);
int buf;
while ( buf = bin.read() != -1)
{
.......
}
bin.close();
위의 2가지 예를 비교한 performance 비교표는 아래와 같습니다.
사용클래스 | 처리시간(ms) |
BufferedReader | 150 |
BufferedInutStream | 80 |
CPU : Pentium 300MHz/ Memory :128M / OS : Linux/ J2SE:1.3.1
'Java' 카테고리의 다른 글
[펌] 하루전/하루후/몇일전/몇일후 날짜 구하기 (0) | 2006.05.16 |
---|---|
[펌] Java 초기 CLSSPATH 세팅 (SDK 설치) (0) | 2006.05.16 |
[Java performance tips - 3] Collection관련 (0) | 2006.05.16 |
[Java performance tips - 2] String 관련 (0) | 2006.05.16 |
[Java performance tips - 1] 일반적사항 관련 (0) | 2006.05.16 |